Я перехожу через каталог для отправки определенных интересующих файлов (содержащихся в списке) в соответствующие им функции, которые называются аналогично элементам в списке.Вызов функции с переменной
import os,sys,argparse
import Contact_parse
import Notes_parse
import Records_parse
...
def file_distro(dir):
'''
This function distributes the source files to their relevant parser scripts
'''
file_types = ["Contact","Notes","Records"]
for filename in os.listdir(dir):
for t in file_types:
if filename.startswith(t) and filename.endswith(".xml"):
print("%s: %s") % (t,filename) # Troubleshooting, works
try:
func = getattr("%s_parse" % (t),main)
# Returns TypeError: getattr(): attribute name must be string
#func = getattr(Contact_parse, main)
# Tried hardcoding to troubleshoot,
# also returns TypeError: getattr(): attribute name must be string
#print("%s_parse" % t) # Troubleshooting, works
except AttributeError:
print("function not found: %s_parse.main" % (t))
else:
func()
else:
continue
получил Ошибка:
getattr(): attribute name must be string
язык GetAttr была предпринята попытка на основе поисков здесь, и там было значительное обсуждение между использованием GetAttr, местные/глобалам, или Dict. Я даже попробовал hardcoding имя модуля, также безрезультатно. Любая помощь приветствуется.
'GetAttr (объект, имя)', но вы вызываете его как GetAttr (имя, объекта), а также отметить, что даже не имеют переменную 'main' определена в коде – e4c5
, что' main'? Я думаю, вы имеете в виду '' main'' вместо 'main' –
Существует основная функция, содержащаяся в каждой импортируемой функции Contact_parser, Notes_parser, Records_parser –