Python不断地从其他来源读取stdin

时间:2016-02-03 23:07:41

标签: python bash stdin watch

是否可以允许Python不断地从其他来源(例如文件)读取stdin?基本上我正在尝试允许我的脚本使用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回显在保持打开状态时添加到文件的任何内容。也许我接近这个错误的方式或者我只是无能为力,但是有办法吗?

1 个答案:

答案 0 :(得分:2)

使用-F tail选项,如果重命名或删除文件并使用原始名称创建新文件,则重新打开该文件。有些编辑器以这种方式编写文件,日志文件旋转脚本也通常以这种方式工作(它们将原始文件重命名为filename.1,并创建一个新的日志文件。)

$ tail -F file | python input.py