【问题标题】:How do I watch a folder for changes and when changes are done using Python?如何查看文件夹的更改以及何时使用 Python 完成更改?
【发布时间】:2010-03-08 19:28:10
【问题描述】:
我需要查看传入文件的文件夹。我在以下帮助下做到了:
How do I watch a file for changes?
问题是正在移动的文件非常大(10gb)
我希望在所有文件都完成移动时收到通知。
我尝试每 20 秒比较一次文件夹的大小,但文件显示其大小正确,即使硬窗口显示它仍在移动。
我正在使用带有 python 的 windows
我找到了一个使用 open 并等待 io 异常的解决方案。
如果文件仍在移动,我会得到 errno 13。
【问题讨论】:
标签:
python
monitoring
pywin32
watch
【解决方案2】:
如果您可以控制导入文件的过程,我会在开始复制文件时放置一个锁定文件,并在您完成后将其删除。锁定文件是指一个 tmp 空文件,它只是表示您正在处理文件。然后你的 py 脚本可以检查锁定文件是否存在。
【解决方案3】:
您或许可以使用os.stat() 来监控文件的mtime。但是请注意,在各种网络条件下,副本可能会暂时停止,因此 mtime 会在几秒钟内不会更新,因此您需要考虑到这一点。
另一种选择是尝试以独占读/写方式打开文件,如果该文件仍被其他进程打开,则在 Windows 下应该会失败
【解决方案5】:
尝试在投票期间检查上次修改的时间更改而不是文件大小。