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

Python使用shutil.copy2复制报NotADirectoryError及多出.db文件问题

问题1 复制单个文件触发NotADirectoryError的原因

该报错和shutil.copy2本身支持单文件复制的能力无关,问题出在你自定义的CopyFol_Subfolders函数的逻辑限制:

  • 该函数第一行就调用了os.listdir(src),这个接口要求传入的src必须是目录路径。你第一次调用时传入的是单个TIF文件的完整路径,os.listdir无法读取文件路径下的子项,直接抛出NotADirectoryError,此时函数根本没有执行到调用shutil.copy2的逻辑。
  • 如果仅需要复制单个文件,不需要调用这个专门用于递归复制文件夹的自定义函数,直接执行shutil.copy2(src, dst)即可正常完成操作。

问题2 目标目录出现源目录未显示的.db文件的原因

你看到的.db文件是Windows系统自动生成的缩略图缓存文件Thumbs.db,出现该现象的原因如下:

  • Windows系统默认会为包含图片、视频等媒体文件的文件夹生成Thumbs.db文件,用于缓存文件夹内媒体文件的缩略图,加快下次打开的加载速度。该文件默认被标记为受保护的操作系统文件,你仅在资源管理器中开启了“显示隐藏文件”,没有关闭“隐藏受保护的操作系统文件(推荐)”选项,因此在源文件夹的资源管理器界面看不到该文件,但Python的os.listdir会遍历所有类型的文件,复制时自然会把该文件也同步到目标路径。
  • 该文件的创建时间和你执行复制操作的时间无关,是对应文件夹首次生成缩略图时创建的,你提到的2018年就是该文件夹第一次被打开查看缩略图的时间,不是本次复制操作生成的新文件。
  • 这类系统缓存文件没有默认关联的打开程序,本身也不会影响你的业务文件。如果不需要复制这类文件,可以在你的递归复制函数中添加判断逻辑,遇到Thumbs.db、.DS_Store(macOS系统缓存文件)这类系统缓存文件时直接跳过即可。
  • 如果要验证源文件夹中确实存在该文件,可以打开资源管理器的「文件夹选项」,在「查看」标签页取消勾选「隐藏受保护的操作系统文件(推荐)」,刷新源文件夹即可看到该文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:45:02