检查文件是否“完整”(使用Python)
有没有办法用Python检查一个文件是否已经复制完成,或者说它是否完整呢?
或者说在命令行上也可以。
我在Mac OS X上以编程的方式处理特定文件夹里的文件,但在运行处理这些文件的代码之前,我需要确认文件已经复制完成。
6 个回答
3
在你复制文件之前,先计算一下这个文件的md5值,然后在你觉得复制完成后再计算一次。如果这两个md5值一样,那就说明复制成功了。你可以使用hashlib模块里的md5来做到这一点。
4
在Unix或Mac OS X的文件系统中,并没有“文件完整性”这个概念。你可以尝试用flock
来锁定文件,或者更简单的方法是先把文件临时复制到目标目录的一个子文件夹里,然后等文件完全复制好后再把它们移动出去(前提是你能控制执行复制的程序)。移动文件是一个原子操作;一旦文件出现在预期的位置,你就知道它已经完全复制好了。
2
如果你知道文件是从哪里复制过来的,你可以检查一下复制的文件大小是否和原文件一样。
另外,如果一个文件的大小在几秒钟内没有变化,那它可能已经复制完成了,这样的判断也许就足够了。不过,这个方法在网络连接很慢的时候可能不太好用。