【问题标题】:I'm tailing a file in python for any changes and it is not picking up a change to the file我在 python 中跟踪一个文件以进行任何更改,但它没有对文件进行更改
【发布时间】:2011-10-28 15:24:29
【问题描述】:

这是我的脚本:

def tail(file, delay=0.5):
    f = open(file, 'r')
    f.seek(0, 2)
    while True:    
        line = f.readline()
        print 'line: ' + line
        if not line:
            time.sleep(delay)
        else:
            print 'line found!'

当我打开文件并向其中添加一些行时,该脚本没有拾取它。我在 linux 上做这个。

【问题讨论】:

  • 您的示例代码对我有用。你是如何写入文件的?
  • 我在 vi 中打开它并在其中添加一些行然后编写它。
  • 这很奇怪......我做了同样的事情,它仍然对我有用。我不知道该告诉你什么。 (为了测试 Python 代码本身,我会使用 echo linetexthere >> file 而不是 vi 之类的编辑器)
  • David,感谢您的输入,问题是使用 vi 在文件中添加一行。这不起作用,但是通过 echo 附加一些文本确实有效。谢谢大家!

标签: python file readline tail


【解决方案1】:

使用open('filename', 'a') 而不是open('filename', 'r') 向文件添加行...我认为您实际上是想追加到文件而不是读取它。

【讨论】:

    【解决方案2】:

    代码看起来不错,因此可能存在缓冲问题。尝试使用 f.read(100) 代替 readline,这样您就可以阅读任何可用的内容,而不是搜索行尾。

    【讨论】:

    • 我这样做了,但仍然没有得到任何东西。这是因为文件缓冲在内存中,所以它不会检测到磁盘上的变化吗?
    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 2013-10-06
    • 2011-02-27
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多