중첩 된 방식으로 호출하는 두 개의 def 함수가 있고 두 번째를 루프에서 호출하려고합니다. 현재 목록의 각 구성원을 적용하는 대신 수동으로 내 목록에 전화하는 방법에 대한 구문을 알아낼 수 있습니다. ...Python : 중첩 된 함수 호출에 목록 적용
#A list of the files I want to read
afiles = [['awc_mm09c.txt','integer'], ['canopy01c.txt','real'],
['canopy10c.txt','real'], ['canopy33c.txt','real'],
['ccapnyp6c.txt','text'], ['gclass09c.txt','text'],
['nyelev09c.txt','real']]
def readfile(fn):
conn = open(ascPath + '\\' + fn, 'r')
# code to read data from the file
def rows(*columns):
# code that merges data from the other files into columns
for ID, cols in enumerate(itertools.izip(*columns)):
yield [ID] + list(cols)
# build the SQL
strQuery = "insert into foo...;"
# run some apsw (SQLite) code
c.execute("begin")
# this works. Is there any way to avoid manually listing each item in the list?
c.executemany(strQuery, rows(readfile(afiles[0][0]),
readfile(afiles[1][0]),
readfile(afiles[2][0]),
readfile(afiles[3][0]),
readfile(afiles[4][0]),
readfile(afiles[5][0]),
readfile(afiles[6][0])))
c.execute("commit")
#I've tried something like the following, but to no avail:
c.executemany(strQuery, rows(
for f in range(len(afiles_dt)):
readfile(afiles_dt[f][0])))
감사합니다. Tim
멋진! 감사. – Tim