如何用Python筛选不含指定字符串的PDF文件名?
筛选目录中文件名不含特定字符串的PDF文件
问题分析
你之前的尝试存在两个关键问题:
- 第一次尝试的语法错误:
pdf =! 'NO STORY'是无效Python语法,且逻辑上未正确判断文件名的子字符串。 - 第二次尝试的逻辑错误:
Path对象的__contains__方法用于检查路径是否包含某个路径片段(如子目录名),而非文件名中的子字符串,因此无法正确筛选目标文件。
正确实现方式
方法1:循环内直接筛选
通过pdf.name获取文件的完整文件名(包含后缀),再用in运算符判断是否不包含目标字符串:
from pathlib import Path pdf_files = Path("C:\\Users\\ME\\Documents\\PretendFolder").glob("*.pdf") for pdf in pdf_files: # 判断文件名中是否不包含"NO STORY" if "NO STORY" not in pdf.name: print(pdf)
方法2:生成器表达式提前过滤
如果想提前过滤掉不符合条件的文件,可以用生成器表达式一次性完成筛选,代码更简洁:
from pathlib import Path # 提前过滤文件名包含"NO STORY"的PDF文件 pdf_files = (pdf for pdf in Path("C:\\Users\\ME\\Documents\\PretendFolder").glob("*.pdf") if "NO STORY" not in pdf.name) for pdf in pdf_files: print(pdf)
关键说明
pdf.name:返回文件的基础名称(如Adjusted NO STORY.pdf),这是我们需要判断的核心字符串。in运算符:直接用于字符串子串判断,是Python中最直观且高效的方式,比调用__contains__方法更清晰,也避免了Path对象方法的逻辑歧义。
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

