0

我想提出列出目录及其子目录中所有文件的最佳方式。完成后,我想过滤掉它们。因此,最佳情况下,这将在 2 行中完成:

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 
4

1 回答 1

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返回一个列表。如果您真的想要一个列表,请将外部括号替换为(...)括号,将返回值更改为列表理解[...]

于 2012-09-18T00:32:13.853 回答