我想分别访问每个生成的对象,而无需直接在生成器函数上进行迭代。
我具有以下“生成器”功能,该功能可以确定应该下载文件还是将其作为文件对象返回
salut
以下功能实际下载文件并调用前一个功能
def retrieve_file(content, to_download, filename):
if to_download:
# Should download this file to the local computer
with open(filename, 'wb') as f:
f.write(content)
return filename
else:
# Do not download, keep it as a file object
output = StringIO()
output.write(content)
return output # Should be replaced with yield?
主要功能是在这种情况下将所有文件下载为对象,然后分别解析每个文件
def get_all_files(to_download):
for year in [2000, 2001, 20002, 2003]:
content = download_file(year)
result = retrieve_file(content,
to_download,
'file-%s.pdf' % year)
return result
在此示例中,删除get_all_files函数,然后将yield_file中的第二个返回值替换为yield即可。问题是我想将这两个函数(main和get_all_files)分开,因为它们位于两个不同的模块中
答案 0 :(得分:0)
只需将return
中的get_all_files
替换为yield
。这将允许您遍历每个文件。
def get_all_files(to_download):
for year in [2000, 2001, 20002, 2003]:
content = download_file(year)
result = retrieve_file(content,
to_download,
'file-%s.pdf' % year)
yield result