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

Chr*_*asa 7 python shell stdin

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

例如:

$ python graph.py < input.input
Run Code Online (Sandbox Code Playgroud)

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

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

Nik*_* B. 13

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

for line in sys.stdin:
  stripped = line.strip()
  if not stripped: break
  lines.append(stripped)
Run Code Online (Sandbox Code Playgroud)


小智 12

考虑以下选项

import sys
sys.stdin = open("input.txt", "r")
Run Code Online (Sandbox Code Playgroud)


Dav*_*son 5

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


使用管道字符:

input.input | python graph.py
Run Code Online (Sandbox Code Playgroud)

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

cat input.input | python graph.py
Run Code Online (Sandbox Code Playgroud)