gpt4 book ai didi

python - 在创建时读取文件的 pyinotify 错误?

转载 作者:可可西里 更新时间:2023-11-01 11:48:04 25 4
gpt4 key购买 nike

每次在某个目录中创建新文件时,我都想解析一个文件。为此,我正在尝试使用 pyinotify设置一个目录来监视 IN_CREATE 内核事件,并触发 parse() 方法。

这是模块:

from pyinotify import WatchManager,
ThreadedNotifier, ProcessEvent, IN_CREATE

class Watcher(ProcessEvent):

watchdir = '/tmp/watch'

def __init__(self):
ProcessEvent.__init__(self)
wm = WatchManager()
self.notifier = ThreadedNotifier(wm, self)
wdd = wm.add_watch(self.watchdir, IN_CREATE)
self.notifier.start()

def process_IN_CREATE(self, event):
pfile = self._parse(event.pathname)
print(pfile)

def _parse(self, filename):
f = open(filename)
file = [line.strip() for line in f.readlines()]
f.close()
return file

if __name__ == '__main__':
Watcher()

问题是 _parse 返回的列表在被新文件创建事件触发时为,就像这样(文件是在另一个窗口中创建的,而 watcher.py 正在运行):

$ python watcher.py
[]

...但奇怪的是,当直接调用时,它会在解释器 session 中运行。

>>> import watcher
>>> w = watcher.Watcher()
>>> w._parse('/tmp/watch/sample')
['This is a sample file', 'Another line', 'And another...']

为什么会这样?我调试这个东西最远的地方就是知道有什么东西让 pyinotify 不能正确读取文件。但是……为什么?

最佳答案

您是否想等到文件关闭?

关于python - 在创建时读取文件的 pyinotify 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/790898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com