我有这个循环从stdin读取行直到输入换行符,但是,这只能通过输入输入来起作用。如何让程序通过命令行从重定向的stdin读取行?
例如:
$ python graph.py < input.input
这是我必须从输入中读取行的循环:
while 1:
line = sys.stdin.readline()
if line == '\n':
break
try:
lines.append(line.strip())
except:
pass
答案 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")