用Python检查清单中的缺失文件
文件整理完成后,最容易遗漏的检查,是确认清单中写着的文件是否还在对应位置。目录看起来整齐,不代表每一项都已复制完整;一份旧清单,也可能引用了已经移动的路径。下面用 Python 标准库演示一个简单的只读检查,把“有没有这个文件”与“文件内容是否正确”分开。

先确定清单的根目录
一份可用的清单,应该说明路径从哪里开始计算。例如把某次活动的资料集中放进 sample_files,清单中的 photo/a.jpg 就表示这个目录下 photo 文件夹里的 a.jpg。这样移动整个资料目录时,不必在每一行保留某台电脑的盘符和个人用户名。根目录不存在时,应先停止检查并确认位置,不能直接把所有文件都算成缺失。
用一个小例子核对存在性
先准备一个测试目录和两条示例路径,再运行下面的代码。示例只检查文件,不会新建、移动、覆盖或删除原始资料。
from pathlib import Pathroot = Path('sample_files')
expected = ['photo/a.jpg', 'notes/readme.txt']if not root.is_dir():
raise SystemExit('请先确认 sample_files 目录存在')
for relative in expected:
target = root / relative
try:
found = target.is_file()
except OSError as error:
print('无法检查', relative, type(error).name)
continue
print('找到' if found else '未找到普通文件', relative)
expected 里的两条路径是示例,需要按自己的清单调整。输出“找到”表示检查当时该路径指向文件,不表示程序已经读取并核验了文件的全部内容。如果路径被改名、文件被移动,或者位置上实际是一个文件夹,也不会被当作找到对应文件。
把不存在与无法检查分开记录
在真实目录中,读取权限、网络磁盘状态和正在进行的同步都会影响检查结果。不同 Python 版本及操作系统对部分路径错误的表现也可能不同。遇到无法访问的位置时,应保留具体路径和错误信息,再回到文件管理器中确认,不应把所有异常都归结为文件丢失。
批量工具还需要检查清单格式。例如空白行、重复项、指向根目录外的位置,都应有明确处理方式。这个小例子使用自己填写的相对路径来说明思路,不是直接导入任意来源清单的完整工具。把清单当作输入时,先确认来源,再约束它可以引用的目录范围。
存在性检查之后还要做什么
可以从照片、视频和文档中分别挑选样本,实际打开并检查。照片看完整图,视频播放开头与结尾,文档查看关键页面。数量一致、路径存在和内容可读,是不同层面的证据,不能用其中一项代替其他检查。
如果需要比较同一个稳定版本的两份文件,可以进一步核对文件大小和内容摘要。经过压缩、裁切或重新编码的分享文件,字节内容可能已经改变,应与对应版本进行比较。原片和分享版本分开存放,并在说明中写清用途,会让后续检查更容易理解。
给交接的人留一份说明
清单附近可以放一份简短说明,写明资料范围、生成清单的时间、根目录名称,以及仍需人工确认的项目。接收者照着清单找回几份样本,比只看文件夹截图更容易发现问题。说明不必很长,但应能回答这批资料包含什么、哪些内容仍待补齐。
最后,清单本身不是备份。它能帮助发现缺失项目,却无法在原文件丢失后恢复内容。重要资料仍需独立副本,并定期检查副本是否可读。先用小目录验证流程,再逐步扩大范围,能减少检查工具本身带来的误解。
说明:本文由 AI 辅助整理,代码为只读基础示例,配图为自制说明图,示例路径均为虚构。

文件整理后,先明确清单根目录,再核对相对路径是否对应文件。本文提供只读 Python 示例,说明存在性检查、异常记录、打开样本和独立备份之间的区别。
浙公网安备 33010602011771号