Chr*_*asa 7 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
Nik*_* B. 13
正如其他人所提到的,可能你的情况line == '\n'永远不会成真.正确的解决方案是使用如下循环:
for line in sys.stdin:
  stripped = line.strip()
  if not stripped: break
  lines.append(stripped)
ETA:根据您的评论,您正在运行无限循环,您可能只是在文件末尾没有空行。
使用管道字符:
input.input | python graph.py
如果input.input实际上是一个文件而不是一个流,请使用cat从它创建一个流:
cat input.input | python graph.py