我有一个Python脚本,它检查拾取目录并处理它找到的任何文件,然后删除它们.
如何确保不会删除仍然由删除该目录中的文件的进程写入的文件?
我的测试用例非常简单.我将300MB的文件复制粘贴到拾取目录中,并且脚本经常会抓取仍在写入的文件.它仅对部分文件进行操作,然后将其删除.这会触发操作系统中的文件操作错误,因为它写入的文件消失了.
在打开/处理/删除它之前,我尝试获取文件锁(使用FileLock模块).但这没有帮助.
我已经考虑过检查文件上的修改时间,以避免在X秒之内发生任何事情.但这似乎很笨拙.
我的测试是在OSX上,但我正在尝试找到一个适用于主要平台的解决方案.
我在这里看到一个类似的问题(如何检查文件是否仍在写入?),但没有明确的解决方案.
谢谢
当我们知道在Linux上使用inotify尝试监视目录时,我们会在创建文件后立即收到通知(在其他进程完成写入之前)
有没有一种有效的方法可以确保在写入文件之前没有读取文件是否由另一个进程完成?
我们可能会添加延迟读取; 但众所周知,这是有缺陷的.
为了更清楚一点的情景; 这两个进程作为不同的用户运行; 预期的负载大约是每秒创建几百个文件.