如何将 glob 与跳过列表一起使用

How to use glob with a skip list

我正在尝试使用 glob.glob 读取一系列目录中具有相同名称的文件,但我想跳过某些特定目录。 我的目录名称类似于 trj0001,..,trj0099,我想跳过它们的列表,例如:list = [trj0005, trj0009, trj0011, trj0056, trj0083]。

我目前正在使用这条线:

    files = glob.glob(r'my_dir/trj_00*/file.txt')

如有任何提示,我们将不胜感激。

在使用 glob 时没有简单的方法可以跳过某些文件,除非您想匹配除匹配某种模式的文件之外的所有文件。

因此您可以使用 filter

明确跳过它
exclude_list = [trj0005, trj0009, trj0011, trj0056, trj0083]
files = filter(lambda path: not any(e in path for e in exclude_list), glob.glob(r'my_dir/trj_00*'))

我建议您使用 glob 过滤列表 after,使用列表理解,它非常可读,如下所示:

import glob

files = glob.glob(r'my_dir/trj_00*/file.txt')
blackList = ['trj0005', 'trj0009', 'trj0011', 'trj0056', 'trj0083']
files = [f for f in files if all(bl not in f for bl in blackList)]

print(files)