Python 连续从其他来源读取标准输入

Python to read stdin from other source continously

是否可以允许 Python 从另一个来源(例如文件)连续读取标准输入?基本上,我试图让我的脚本使用 stdin 来回显输入,并且我想使用文件或外部源与其交互(同时保持打开状态)。

一个例子可能是 (input.py):

#!/usr/bin/python

import sys

line = sys.stdin.readline()

while line:
    print line,
    line = sys.stdin.readline()

直接执行此操作我可以连续输入文本并在脚本保持活动状态时回显。如果您想使用外部源,例如文件或来自 bash 的输入,那么脚本会在收到输入后立即退出:

$ echo "hello" | python input.py
hello
$

最终我想做的是:

$ tail -f file | python input.py

然后,如果文件更新有 input.py 回显在保持打开状态时添加到文件中的任何内容。也许我处理这个问题的方式不对,或者我只是一无所知,但是有办法吗?

使用 -F 选项到 tail 使其在文件被重命名或删除时重新打开文件并使用原始名称创建新文件。一些编辑器这样写文件,日志文件轮换脚本通常也是这样工作的(他们将原始文件重命名为filename.1,并创建一个新的日志文件)。

$ tail -F file | python input.py