Я хотел бы получить доступ к каждому сгенерированному объекту отдельно, без необходимости выполнять итерации непосредственно по функции генератора.
У меня есть следующая функция «генератора», которая определяет, должен ли я загрузить файл или вернуть его как объект файла
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
И основная функция, которая в этом случае загружает все файлы как объекты, а затем анализирует каждый файл отдельно.
def main():
for file in get_all_files(True):
parse_file(file)
В этом примере сработает удаление функции get_all_files и замена второго возврата в retrieve_file на yield. Проблема в том, что я хотел бы разделить 2 функции (main и get_all_files), потому что они находятся в двух разных модулях