恐怕是时候问另一个新手问题了。我试图使用Python3.2.2(在本例中,版本很重要)来监视特定Windows路径的更改。最简单的方法,也是我使用的方法是:
original_state = os.listdir(path_string)
while os.listdir(path_string) == original_state:
time.sleep(1)
change_time = datetime.datetime.now()我编写这段代码是为了对另一个应用程序进行计时测试。考虑到这一目标,Python脚本需要(a)不对系统性能产生不利影响,(b)相对精确--误差范围为+/- 1秒是我可以证明的绝对最大值。不幸的是,这种方法不符合第一个标准:当运行这段特定的代码时,虚拟环境就会受到冲击,大大降低了我试图精确测量其性能的操作。
我读过如何查看文件系统以进行更改、如何查看更改的文件?和changes.html (推荐一篇文章来解决第二个这样的问题)。不幸的是,Tim的代码似乎是Python2.x代码--据我所知,Python3中不支持pywin32模块。
在Python 3中,我能做些什么来监视这个特定的路径,而不会遇到相同的性能问题?
发布于 2011-12-01 21:42:26
根据ActivePython 3.2文档,他们的pywin32现在支持Python3.x
发布于 2011-12-01 21:39:52
在Linux上有iNotify和pyNotify。windows上类似的异步通知机制是FindFirstChangeNotification函数,它是FileSystemWatcher类的一部分。
请看提姆·高登网页上的解决方案:
发布于 2013-03-25 11:01:14
还可以使用GFileMonitor监视文件或目录,Gio负责底层操作系统的详细信息。尽管如此,如果这是一个Windows程序,您可能不会使用Gtk。为子孙后代:
from gi.repository import Gio
gfile = Gio.file_new_for_path('/home/user/Downloads')
gfilemonitor = gfile.monitor(Gio.FileMonitorFlags.NONE, None)
gfilemonitor.connect('changed', callback_func)https://stackoverflow.com/questions/8348557
复制相似问题