我有一个文件的数据路径,其中有几个数据文件,例如 data01.txt、data02.txt 等。在处理过程中,用户将为数据提供掩码文件(也可能通过外部工具)。掩码文件将包含字符串“mask”,例如data01-mask.txt。
from pathlib import Path
p = Path(C:\Windowns\test\data01.txt)
dircontent = list(p.parent.glob('*'))
Run Code Online (Sandbox Code Playgroud)
为我提供所有文件路径作为对象的列表,Path包括潜在的掩码。现在我想要一个列表,它为我提供目录内容,但不包括任何包含掩码的文件。我尝试过这种方法来使用奇特的正则表达式*![mask]*,但我没有让它工作。
使用,
dircontentstr = [str(elem) for elem in x]
filtereddir = [elem.find('mask') for elem in dircontentstr if elem.find('mask')==-1]
Run Code Online (Sandbox Code Playgroud)
我可以获得所需的结果,但然后转换回Path元素似乎很愚蠢。有没有直接的方法从目录列表中排除?
Mar*_*ers 10
此处无需将任何内容转换为字符串,因为Path对象具有可用于过滤的有用属性。看一下.name和.stem属性;这些允许您过滤基本文件名上的路径对象(其中.stem是不带扩展名的基本名称):
dircontent = [path for path in p.parent.glob('*') if 'mask' not in path.stem]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10530 次 |
| 最近记录: |