0

我想使用 echo 将一些数据传递给 python 脚本,然后促进用户输入选项。我正在经历一个EOFError我认为正在发生的事情,因为我读取了sys.stdin. 我该如何解决这个问题?谢谢!

代码.py:

x = ''
for line in sys.stdin:
  x += line
y = raw_input()

用法:

echo -e -n '1324' | ./code.py

错误raw_input()

EOFError: EOF when reading a line
4

2 回答 2

1

利用:

{ echo -e -n '1324'; cat; } | ./code.py

首先echo将文字字符串写入管道,然后cat从标准输入读取并将其复制到管道。python 脚本会将这一切视为其标准输入。

于 2016-08-09T16:46:51.760 回答
0

您只是不能通过标准输入(即重定向)发送数据,然后返回交互模式。

当您执行时a | b, b 不能再从标准输入中读取。如果它想这样做,它会在a完成并打破管道后立即停止。

但是当a完成时,并不意味着你会stdin再次获得。

也许你可以改变你想做的事情的方式,例如:

echo -n -e '1324' | ./code.py

变成

./code.py '1234' '5678'

并用于sys.argv[]获取1234, 5678...的值

import sys

x = ''
for line in sys.argv[1:]:
  x += line+"\n"

y = raw_input()

如果您有很多行要输出,请传递一个文件参数以及您将阅读的内容

import sys

x = ''
for line in open(sys.argv[1],"r"):
  x += line

y = raw_input()
于 2016-08-09T16:46:17.760 回答