使用Python或命令行,是否可以检查文件是否已完成复制或完整?
我在Mac OSX上以编程方式操作特定文件夹中的文件,但需要在运行进行操作的代码之前检查文件是否完整。
flock
锁定文件,或者更简单的方法是将文件复制到目标目录的子目录中,一旦它们完全复制完成就将它们移出(假设您对执行复制的程序有控制权)。移动是一个原子操作;一旦文件出现在预期路径上,您就知道该文件已完全复制。在复制文件之前,对该文件进行MD5加密,然后每当您认为已经完成复制时再次进行加密。当它们匹配时,您就可以继续了。为此,请使用hashlib模块中的MD5。
看起来你控制着(Python?)程序进行复制。你使用什么命令进行复制?我认为编写代码以阻塞直到复制操作完成应该足够了。
这个程序是多线程还是多进程的?如果是,你可以在文件路径完成时将它们添加到队列中,然后让另一个线程只处理队列中的项目。
import os
# Get the file size two times, now and after 3 seconds.
size_1 = os.path.getsize(file_path)
time.sleep(3)
size_2 = os.path.getsize(file_path)
# compare the sizes.
if size_1 == size_2:
# Do something.
else:
# Do something else.
您可以根据自己的需要更改时间。