如何使用python中的pathlib排除路径目录中的文件?

时间:2019-02-13 17:24:50

标签: python pathlib

我有一个指向几个数据文件的数据路径,比如说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元素似乎很愚蠢。是否有直接方法从目录列表中排除?

1 个答案:

答案 0 :(得分:1)

这里不需要将任何内容转换为字符串,因为Path对象具有有用的属性,可用于对其进行过滤。看一下.name.stem属性;这些使您可以根据基本文件名(其中.stem是不带扩展名的基本名称)过滤路径对象:

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