检查文件是否“完整”(使用python)

时间:2011-05-11 16:23:01

标签: python macos file-io

是否可以使用python检查文件是否完成复制? 甚至在命令行上 我在mac osx上的特定文件夹中以编程方式操作文件,但我需要在运行执行操作的代码之前检查文件是否完整。

5 个答案:

答案 0 :(得分:3)

Unix / Mac OS X文件系统中没有“文件完整性”的概念。您可以尝试使用flock锁定文件,或者更简单,将文件临时复制到目标目录的子目录,然后在完全复制后将其移出(假设您可以控制执行该操作的程序)复印)。移动是一种原子操作;你知道文件一旦出现在预期的路径就被完全复制了。

答案 1 :(得分:3)

在复制前获取文件的md5,然后在您认为完成复制时再次使用。当他们匹配时,你很高兴。使用hashlib模块中的md5来实现此目的。

答案 2 :(得分:2)

如果您知道从哪里复制文件,可以检查副本的大小是否已达到原始大小。

或者,如果文件的大小在几秒钟内没有变化,那么可能完成复制,这可能已经足够了。 (但是,对于慢速网络连接可能效果不佳。)

答案 3 :(得分:1)

好像你可以控制(python?)程序进行复制。你用什么命令来复制?我认为编写代码使其阻塞直到复制操作完成就足够了。

此程序是多线程还是已处理?如果是这样,您可以在完成后将文件路径添加到队列,然后让另一个线程仅对队列中的项目执行操作。

答案 4 :(得分:0)

您可以使用lsof并解析打开的句柄列表。如果某个进程仍然在文件上打开了句柄(也就是写作),你可以在那里找到它。