You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python筛选不含指定字符串的PDF文件名?

筛选目录中文件名不含特定字符串的PDF文件

问题分析

你之前的尝试存在两个关键问题:

  1. 第一次尝试的语法错误:pdf =! 'NO STORY' 是无效Python语法,且逻辑上未正确判断文件名的子字符串。
  2. 第二次尝试的逻辑错误: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 22:22:39