使用python从重定向的stdin读取输入

时间:2012-03-06 17:47:36

标签: python shell stdin

我有这个循环从stdin读取行直到输入换行符,但是,这只能通过输入输入来起作用。如何让程序通过命令行从重定向的stdin读取行?

例如:

$ python graph.py < input.input

这是我必须从输入中读取行的循环:

while 1:
     line = sys.stdin.readline()
     if line == '\n':
         break
     try:
       lines.append(line.strip())
     except:
       pass

3 个答案:

答案 0 :(得分:12)

正如其他人所提到的,可能你的条件line == '\n'永远不会成立。正确的解决方案是使用如下的循环:

for line in sys.stdin:
  stripped = line.strip()
  if not stripped: break
  lines.append(stripped)

答案 1 :(得分:3)

ETA:根据您的评论,您正在进入无限循环,您可能只是在文件的末尾没有空行。


使用pipe字符:

input.input | python graph.py

如果input.input实际上是文件而不是流,请使用cat从中创建一个流:

cat input.input | python graph.py

答案 2 :(得分:1)

考虑以下选项

import sys
sys.stdin = open("input.txt", "r")