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

Python复制C盘≥50KB的JPG文件到桌面备份时出现FileNotFoundError报错求助

错误原因
  • 核心触发原因:调用os.path.getsize(file)时仅传入了文件名,未拼接文件所在目录路径。os.walk()返回的files列表仅包含文件名本身,程序默认会在脚本运行的当前工作目录查找该文件,而目标文件实际存放在root变量对应的目录下,因此找不到文件抛出报错。
  • 逻辑缺陷1:os.path.getsize()返回的单位是字节,你需要匹配的50KB对应数值为50 * 1024 = 51200字节,原代码中>=50的判断阈值完全不符合需求。
  • 逻辑缺陷2:代码使用了time.sleep()但未导入time库,触发键盘中断时会抛出模块缺失错误。
  • 兼容缺陷:遍历C盘时会遇到大量无访问权限的系统目录,未做异常捕获会导致程序中途崩溃。
  • 体验缺陷:原后缀判断仅能匹配小写的.jpg/.jpeg,无法识别大写的.JPG/.JPEG格式文件。
修改方案
  1. 获取文件大小、执行复制操作时,统一使用root和文件名拼接后的完整绝对路径
  2. 修正文件大小判断阈值为50KB对应的51200字节
  3. 补充导入time依赖库
  4. 增加权限异常捕获逻辑,跳过无法访问的目录和文件
  5. 优化后缀判断逻辑,兼容大小写格式的后缀名
修正后完整代码
import os
import shutil
import time

# 创建桌面Backup目录
dir_name = "Backup"
dir_path = os.path.join(os.environ['USERPROFILE'], 'Desktop')
backup_path = os.path.join(dir_path, dir_name)

if not os.path.exists(backup_path):
    os.mkdir(backup_path)
    print(f"备份目录已创建:{backup_path}")

try:
    scan_path = r'C:\\'
    extensions = (".jpg", ".jpeg")
    for root, dirs, files in os.walk(scan_path):
        try:
            for file in files:
                # 兼容大小写后缀判断
                if file.lower().endswith(extensions):
                    full_file_path = os.path.join(root, file)
                    # 用完整路径获取文件大小
                    file_size = os.path.getsize(full_file_path)
                    # 50KB换算为字节
                    if file_size >= 50 * 1024:
                        print(f'匹配文件:{full_file_path},大小:{file_size/1024:.2f} KB')
                        shutil.copy2(full_file_path, backup_path)
                        print(f"已复制:{file}")
        except PermissionError:
            print(f"无权限访问目录:{root},已跳过")
            continue
        except FileNotFoundError:
            print(f"路径不存在:{root},已跳过")
            continue

except KeyboardInterrupt:
    print("程序已手动终止!")
    time.sleep(5)
    os._exit(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:15:03