0

我需要查看传入文件的文件夹。我在以下帮助下做到了这一点:
如何查看文件以进行更改?
问题是正在移动的文件非常大(10gb),我希望在所有文件完成移动时得到通知。我尝试每 20 秒比较一次文件夹的大小,但文件显示其大小正确,即使硬窗口显示它仍在移动。我正在使用带有 python 的 windows

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

4

5 回答 5

1

你应该看看这个链接:

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

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

否则,如果您使用的是 linux,则有 iNotify 和相关的 Python 包装器:

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

这里:http ://trac.dbzteam.org/pyinotify

于 2010-03-08T21:26:36.590 回答
0

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

于 2010-03-08T20:02:08.880 回答
0

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

于 2010-03-08T21:03:25.863 回答
0

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

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

于 2010-03-08T20:58:38.657 回答
0

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

于 2010-03-08T21:21:29.947 回答