当文件共享非常相似的名称时如何使用 pathlib.glob() 遍历文件

How to iterate through files using pathlib.glob() when files share very similar names

My Directory 看起来像这样:

P1_AAA_NOT_SAMPLE.csv
P1_AAA_SAMPLE.csv
P1_BBB_NOT_SAMPLE.csv
P1_BBB_SAMPLE.csv
P1_CCC_NOT_SAMPLE.csv
P1_CCC_SAMPLE.csv

P2_AAA_NOT_SAMPLE.csv
P2_AAA_SAMPLE.csv
P2_BBB_NOT_SAMPLE.csv
P2_BBB_SAMPLE.csv
P2_CCC_NOT_SAMPLE.csv
P2_CCC_SAMPLE.csv

如果我只想捕获 SAMPLE 文件(即,我不想要 NOT_SAMPLE 文件),如何使用 pathlib.glob() 遍历此目录中的文件。

我的代码如下所示:

from pathlib import Path

file_path = r'C:\Users\HP\Desktop\My Directory'

for fle in Path(file_path).glob('P*_*_SAMPLE.csv'):
    # do something with each SAMPLE file

但是此代码还将捕获 SAMPLE 文件和 NOT_SAMPLE 文件。有没有办法调整通配符或 glob() 部分以仅捕获 SAMPLE 文件,最好使用 pathlib?

提前致谢。

像这样,如果文件名中有“不”:做点什么。

在你的 for 循环之后,

for fle in Path(file_path).glob('P*_*_SAMPLE.csv'):
    if 'NOT' not in str(file):
        #do something

您可以在生成器表达式(或列表理解)中进行过滤,如下所示:

for fle in (p for p in Path(file_path).glob('P*_*_SAMPLE.csv') if 'NOT_SAMPLE' not in str(p)):

或之前建立列表:

valid_paths = [p for p in Path(file_path).glob('P*_*_SAMPLE.csv') if 'NOT_SAMPLE' not in str(p)]

for fle in valid_paths: