如何从os.walk中过滤已知类型的文件?

45 投票
12 回答
70099 浏览
提问于 2025-04-15 13:07

我有一个从 os.walk 得到的列表。但是我想排除一些目录和文件。我知道怎么排除目录:

for root, dirs, files in os.walk('C:/My_files/test'):
    if "Update" in dirs:
        dirs.remove("Update")

但是我该怎么排除我知道类型的文件呢?因为这样做是行不通的:

if "*.dat" in files:
    files.remove("*.dat")

12 个回答

10

还有一个补充,因为我刚写了这个,然后偶然看到了这个问题:

files = filter(lambda file: not file.endswith('.txt'), files)

注意,在Python 3中,filter会返回一个生成器,而不是一个列表,列表推导式是更受欢迎的选择。

32

排除多个文件扩展名。

files = [ file for file in files if not file.endswith( ('.dat','.tar') ) ]
59
files = [ fi for fi in files if not fi.endswith(".dat") ]

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

撰写回答