如何以正确的方式在 python 中使用 pathlib 排除路径目录中的文件?

How to exclude files in path directory using pathlib in python the proper way?

我有几个数据文件的数据路径,比如 data01.txt、data02.txt 等等。在处理过程中,用户将为数据提供掩码文件(也可能通过外部工具)。掩码文件将包含字符串 'mask',例如 data01-mask.txt.

from pathlib import Path
p = Path(C:\Windowns\test\data01.txt)
dircontent = list(p.parent.glob('*'))

给我一个所有文件路径的列表作为 Path 对象,包括潜在的掩码。现在我想要一个列表,它给我目录内容,但不包括任何包含掩码的文件。我有 tried this approach 可以使用花哨的正则表达式 *![mask]* 但我没有让它工作。

正在使用,

dircontentstr = [str(elem) for elem in x]
filtereddir = [elem.find('mask') for elem in dircontentstr if elem.find('mask')==-1]

我可以得到想要的结果,但是再转换回 Path 元素似乎很愚蠢。有没有直接的方法从目录列表中排除?

此处无需将任何内容转换为字符串,因为 Path 对象具有可用于过滤的有用属性。看看 .name and .stem 属性;这些允许您过滤基本文件名的路径对象(其中 .stem 是不带扩展名的基本名称):

dircontent = [path for path in p.parent.glob('*') if 'mask' not in path.stem]