나는리스트에있는 항목들과 비슷한 이름의 특정 함수에 관심있는 특정 파일 (리스트에 포함 된)을 보내도록 디렉토리를 반복하고있다.변수가있는 함수 호출하기
getattr(): attribute name must be string
getattr 언어는 시도 여기에 검색을 기반으로하였으며, getattr, 지역/전역, 또는 딕셔너리를 사용하여 사이에 상당한 토론이 있었다 : 오류를 수신
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 (객체 이름)'하지만 당신은 getattr (이름, 객체)로 호출하고 또한 당신도 main' 무슨 일이'당신의 코드 – e4c5
에 정의 '라는 변수가없는 점에 유의하고 있습니다 main'? 제 생각에 당신은'main' 대신에'main''123을 사용합니다. –
가져온 함수에 각각 main 함수가 있습니다 Contact_parser, Notes_parser, Records_parser –