如何查看文件夹以进行更改以及何时使用Python完成更改?

时间:2010-03-08 19:28:11

标签: python monitoring pywin32 watch

我需要查看传入文件的文件夹。我通过以下帮助做到了这一点:
How do I watch a file for changes?
问题是正在移动的文件非常大(10gb) 我想在所有文件完成移动时收到通知。 我尝试每隔20秒比较文件夹的大小,但文件显示其正确的大小,即使是严格的窗口显示它仍在移动。 我正在使用带有python的窗口

  

我找到了一个使用open并等待io异常的解决方案。   如果文件仍在移动,我会得到错误13。

5 个答案:

答案 0 :(得分:1)

你应该看一下这个链接:

http://timgolden.me.uk/python/win32_how_do_i/watch_directory_for_changes.html

在那里,您可以看到您正在谈论的方法(简单轮询)与其他两种特定于Windows的技术的比较,在我看来,这些技术为您的问题提供了更好的解决方案!

否则,如果你使用的是linux,那就是iNotify和相对的Python包装器:

  

Pyinotify是一个纯Python模块   用于监视文件系统事件   Linux平台通过inotify

     

此处:http://trac.dbzteam.org/pyinotify

答案 1 :(得分:0)

如果您可以控制导入文件的过程,我会在开始复制文件时放入一个锁定文件,并在完成后将其删除。通过锁定文件我的意思是一个tmp空文件,它只是表示你正在处理文件。那么你的py脚本可以检查是否存在锁文件。

答案 2 :(得分:0)

您可以使用os.stat()来监控文件的mtime。但请注意,在各种网络条件下,副本可能会暂时停止,因此mtime不会更新几秒钟,因此您需要考虑到这一点。

另一种选择是尝试使用独占读/写打开文件,如果该文件仍被其他进程打开,则该文件应在Windows下失败

答案 3 :(得分:0)

最可靠的方法是编写自己的程序来移动文件。

答案 4 :(得分:0)

尝试在投票期间检查上次修改的时间更改而不是文件大小。