我想提出列出目录及其子目录中所有文件的最佳方法。完成后,我想过滤掉它们。因此,最好这将在两行中完成:
def getFilesContaining(filename):
files = map(lambda x: os.path.join(x, file), os.walk('.')) #Note: this map does NOT work
filtered_files = filter(lambda x: filename in x, files)
return filtered_files
答案 0 :(得分:3)
def getFilesContaining(filename):
paths = (os.path.join(root, f) for root, dirs, files in os.walk('.')
for f in files)
return (path for path in paths if filename in path)
这将返回一个迭代器。在您的版本中,filter
会返回一个列表。如果您确实需要列表,请将返回值更改为列表解析,方法是将括号(...)
替换为括号[...]
。