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

如何获取不含PDF文件的文件夹路径?现有Python代码异常求助

如何找出所有不含PDF文件的文件夹?

我明白你遇到的问题了——你的代码逻辑刚好搞反了,还会重复添加文件夹,所以才返回了几乎所有路径。咱们一步步来解决这个问题:

先说说你原代码的问题

你的代码里,只要遍历到一个不是PDF的文件,就把当前文件夹路径加入列表。这意味着:

  • 哪怕文件夹里有PDF,只要还有其他文件,它就会被多次添加到结果里
  • 完全不符合“只找不含任何PDF的文件夹”的需求

正确的实现思路

我们需要对每个文件夹做的是:检查这个文件夹里有没有任何PDF文件,如果完全没有,才把它加入结果列表。

这里有两种简洁的实现方式:

方式一:用标志位逐文件检查(直观易懂)

import os

path = 'T:/Projects/'
paths_not_containing_pdfs = []

for root, dirs, files in os.walk(path):
    has_pdf = False
    # 遍历当前文件夹的所有文件
    for name in files:
        # 找到一个PDF就标记并跳出循环,不用继续检查了
        if name.lower().endswith('.pdf'):
            has_pdf = True
            break
    # 如果没有找到任何PDF,就把这个文件夹加入列表
    if not has_pdf:
        paths_not_containing_pdfs.append(root)

# 输出结果
for folder in paths_not_containing_pdfs:
    print(folder)

方式二:用any()函数简化代码(更Pythonic)

利用Python的内置函数any()可以一行搞定检查逻辑,代码更简洁:

import os

path = 'T:/Projects/'
# 列表推导式直接生成结果
paths_not_containing_pdfs = [
    root for root, dirs, files in os.walk(path)
    if not any(f.lower().endswith('.pdf') for f in files)
]

# 打印结果
for folder in paths_not_containing_pdfs:
    print(folder)

额外优化:匹配大小写不敏感的PDF后缀

我在代码里加了.lower(),这样不管是.pdf还是.PDF甚至.Pdf都能被匹配到,避免漏掉那些后缀大写的PDF文件。

内容的提问来源于stack exchange,提问作者CodingBiology

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 10:13:13