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

Python脚本If分支正常Else无效,如何实现文件检测循环?

解决循环检测PDF文件的问题

我来帮你搞定这个循环检测PDF的需求!你的现有代码有两个核心问题,导致没达到预期效果:

问题分析

  • glob.iglob的坑:当目录里没有PDF文件时,这个生成器是空的,你的for循环直接跳过,else分支根本没机会执行。
  • 缺少持续循环逻辑:脚本现在只运行一次检测就结束了,没有实现“重复运行”的要求。

修复后的完整代码

直接用无限循环+文件存在性判断就能解决,代码里加了详细注释:

import os
import glob
import time
import shutil  # 保留你原代码里用到的库

# 指定要检测的目标目录
source_dir = 'C:/File Location/Files'

# 无限循环实现持续检测(手动终止脚本可按Ctrl+C)
while True:
    # 获取目录下所有PDF文件的路径列表
    existing_pdfs = glob.glob(os.path.join(source_dir, "*.pdf"))
    
    if existing_pdfs:
        # 检测到PDF文件,打印信息后休眠30秒再重新检测
        print("✅ 检测到PDF文件,30秒后再次检查")
        # 如果需要处理每个PDF(比如移动/复制),可以在这里加for循环遍历existing_pdfs
        # for pdf_path in existing_pdfs:
        #     shutil.move(pdf_path, "你的目标路径")
        time.sleep(30)
    else:
        # 未检测到PDF,休眠19分钟(1140秒)后重试
        print("❌ 未检测到PDF文件,19分钟后重新检查...")
        time.sleep(1140)

关键改进点

  1. while True无限循环:让脚本持续运行,直到你手动按Ctrl+C终止。
  2. 用glob.glob替代iglob:直接返回所有匹配的PDF文件列表,空列表就代表没有文件,这样能直接用if existing_pdfs判断状态,避免了原代码中for循环跳过的问题。
  3. 简化逻辑:你的需求是“只要有PDF就打印然后重复检测”,不需要遍历每个文件(如果需要处理单个文件,取消注释里的for循环即可)。

额外提示

如果需要更高效的文件检测(比如监控目录实时变化而不是定时轮询),可以考虑用watchdog库,但对于你的需求来说,定时轮询已经足够简单好用啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:10:25