理解"tail -f in python"

Kar*_*våg 3 python file-io file tail

我创建了一个非常简单的python脚本:

def read_then_follow(file):
    for line in file:
        yield line
    while True:
        line = file.readline()
        if not line:
            time.sleep(1.0)
            continue
        yield line

for line in read_then_follow("some_file.txt"): print line
Run Code Online (Sandbox Code Playgroud)

文件"some_file.txt"包含几行文本,在运行脚本时将写入屏幕.如果我随后在文件中添加一行echo "line" >> some_file.txt,该行将在1秒内打印到屏幕上.但是:如果我在vim中打开文件,在底部添加一行并保存,脚本将停止运行.它既不会将用vim写入的新行写入屏幕,也不会对其他echo ...命令进行响应.

为了您的信息,我目前在Ubuntu 10.10上使用python 2.6.6.

Sve*_*ach 8

(我假设你使用的是类Unix操作系统.)

保存在vim中实际上会在磁盘上创建一个具有相同名称的文件.脚本保存的文件句柄仍指向文件,该文件不再具有目录条目.如果脚本终止,则旧文件的引用计数器将降为0,文件将被删除.