如何判断文件是否写入完成

9 投票
2 回答
10811 浏览
提问于 2025-04-16 00:08

我现在的情况是,有一个程序正在往一个文件里写东西,这个文件有时候会很大,比如说400到500MB。我需要知道它什么时候写完。虽然我可以在目录里看到这个文件,但它可能还没有写完。而且这需要在远程完成,也就是说在同一个局域网内,但不是在同一台电脑上。通常,想要知道文件写完的程序是在一台Linux机器上,而写文件的程序和文件本身是在一台Windows机器上。顺便说一下,samba不适用。可以考虑用xmlrpc和Windows机器上的服务进行通信,或者使用snmp来检查是否可行。

理想情况下:

  • 能在Linux或Windows上都能工作,也就是说这个解决方案不依赖于操作系统。
  • 适用于任何类型的文件。

可以接受的:

  • 只在Windows上工作,但可以通过某个库或其他方式,用Python访问。
  • 只适用于PDF文件。

目前最好的想法是定期从Windows机器上的某个进程打开这个文件,查看最后几字节,检查是否有PDF结束标记,并考虑到行尾的差异,因为这个文件可能是在Linux或Windows上创建的。

2 个回答

8

你可以尝试很多方法。我建议你试着以写入的方式打开这个文件。如果成功了,那就说明没有其他人正在写这个文件。

如果你无法直接在不同的机器之间访问这个文件,可以考虑围绕这个想法建立一个网络服务。

1

我最终解决了我们的问题。原来,写入文件的程序把文件锁定了,所以我们只需要尝试以只读的方式打开这些文件。如果打开时被拒绝,那就说明这些文件正在被使用。

撰写回答