Я начал с кода, полученного из другой вопрос stackoverflow для создания полных путей для всех файлов в дереве каталогов:
import os
def recursive_file_gen(mydir):
for root, dirs, files in os.walk(mydir):
for file in files:
yield os.path.join(root, file)
Я хотел добавить запоминание, и мне казалось, что самый простой способ добиться этого — просто заставить recursive_file_gen вместо этого возвращать список:
def recursive_file_list(mydir):
result = []
for root, dirs, files in os.walk(mydir):
for file in files:
result.append(os.path.join(root, file))
return result
Этот код хорош, на самом деле. Конечно, нетрудно понять, что происходит. Но составление списка с помощью последовательных операций append
не совсем Pythonic. Я предполагаю, что есть лучший способ использовать синтаксис Python, возможно, через понимание списка, и изучение этого было бы поучительно.
Конечно, я мог бы написать:
def recursive_file_list(mydir):
return list(recursive_file_gen(mydir))
и запомни это. Но мне интересно, есть ли что-нибудь чище.