如何确保文件在复制前完成?

时间:2018-03-01 16:19:29

标签: python file copy

应用程序A(在我的控制之外)将文件写入目录。 写完文件后,我想用其他的python脚本将其备份到其他地方。

问题:如何确定文件已完成或者应用程序A仍在编写文件以便我应该等到文件完成?我担心我可以复制一个部分文件......

我想使用此功能shutil.copyfile(src,dst),但我不知道它是否安全,或者我应该检查要以其他方式复制的文件。

1 个答案:

答案 0 :(得分:0)

一般来说,你不能

因为您没有解决问题所需的信息。

如果您必须知道文件已完全传输/创建/写入/成功,创建者必须以某种方式向您发送信号,因为只有创建者才有该信息。从接收方来看,通常无法推断文件已被完全传输。您可以尝试猜测,但这就是全部。例如,您通常无法从连接丢失的地方告知完整转移。

所以你需要发件人的某种信号。

一种常见的方法是使用重命名操作,例如filename.xfrfilename,或者来自工作中的""您正在观看的目录。由于大多数操作系统以原子方式实现此类重命名操作,如果发送方仅在成功完成传输时进行重命名,则您只会处理已成功传输的完整文件。

另一个常见信号是发送"完成"标记文件,例如在filename.done成功发送后发送filename

由于您无法控制发件人,因此您无法通过观看文件可靠地解决此问题。