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

问题描述 投票:1回答:1

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

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

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

python file copy
1个回答
0
投票

一般来说,你不能。

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

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

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

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

另一个常见的信号是发送一个“完成”标志文件,例如一旦成功发送filename.done就发送filename

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

© www.soinside.com 2019 - 2024. All rights reserved.