我可以在实时文件上使用Counter吗?

时间:2015-02-14 01:20:53

标签: python

以下使用已关闭的文件'loggedData.dat'可以正常工作。如果一个数字重复超过5次,它将显示在列表的打印输出中。但我希望'loggedData.dat'成为一个实时文件,一个不断被添加到的文件。我怎么做?我尝试在脚本运行后添加到'loggedData.dat'但没有得到响应。我在我的Windows 7计算机上使用这个python-2.7脚本,它将'loggedData.dat'放入其记事本中。

import numpy as np
from collections import Counter
list_of_files=[('loggedData.dat', 'Nothing')]
datalist = [(np.loadtxt(filename), label) for filename, label list_of_files]
while True:
    for data, label in datalist:
        List = [k for (k, v) in Counter(data[:,1]).iteritems() if v>5]
        print List

1 个答案:

答案 0 :(得分:0)

当对" live file"进行更改时,您的核心问题将被通知,而无需不断轮询。你在看。

一个优秀的跨平台库是watchdog - 它确实需要你安装一堆其他东西,但它值得付出努力。

一旦通知您关注的文件发生了变化,您需要做的事情取决于您的确切应用限制。

如果更改是任意的(例如包括对现有行的删除或编辑),那么您将不得不重新阅读其新版本中的整个文件。

在另一个极端,如果约束非常强(例如,只有线条被追加,一旦你在那里就不会被修改),你可能能够优化它(仅对相当大的文件有用),尽管可能如果您使用像np.loadtxt这样的高级抽象工具,那就不行了。

但我不会对此进行扩展,因为它会过早优化,不知道你的意思是什么"一个实时文件"在所有需要的令人难以忍受的细节水平: - )。