我想编写一个python脚本(并在后台的Windows 7上全天候运行),它检查是否在c:\ Data \或c:\ Data的子目录中创建了一个新目录(例如c :\ Data \ 1 \ 2 \ 3 \或c:\ Data \ 1 \ test \ 2)
跟踪目录创建的最佳性能(在Windows 7上)是什么?
答案 0 :(得分:1)
这是一个快速扫描工具,每隔10秒扫描一次变化:
>>> import os
>>> from time import sleep
>>> def build_dir_tree(base):
all_dirs = []
for root, dirs, files in os.walk(base):
for dir_ in dirs:
all_dirs.append(os.path.join(root, dir_))
return all_dirs
>>> base = r'E:\CFM\IT\Dev\Python\test'
>>> old_dirs = build_dir_tree(base)
>>> while True:
new_dirs = build_dir_tree(base)
removed = [d for d in old_dirs if d not in new_dirs]
added = [d for d in new_dirs if d not in old_dirs]
print 'Added :', added, '- Removed:', removed
old_dirs = new_dirs
sleep(10)
Added : [] - Removed: []
Added : ['E:\\CFM\\IT\\Dev\\Python\\test\\hep'] - Removed: []
Added : [] - Removed: []
Added : ['E:\\CFM\\IT\\Dev\\Python\\test\\hop\\hap'] - Removed: []
Added : [] - Removed: ['E:\\CFM\\IT\\Dev\\Python\\test\\hep']
您只需根据时间步长,时间显示等进行调整。
答案 1 :(得分:0)
使用pywin32挂钩到windows api。然后使用其中一个change notifications进行更改。这在python中会很痛苦,但它是监视目录以进行更改的最高效方法。请注意,这仅适用于本地文件系统,而不适用于网络文件系统。
你唯一的选择就是检查和睡觉,这里充满了有趣的小惊喜和边缘情况。我最喜欢的是Windows在写入文件内容之前写入文件指针 。如果有足够的时间,您将在文件存在之前“找到”该文件,并且您的所有代码都将失败。你不能在看到它之后等待一段固定的时间,因为它可能没有写完。
网络写入数百兆文件的人吗?