我想使用echo将一些数据传递给python脚本,之后将用户提升为输入选项。我正在浏览EOFError
,我认为这是因为我在sys.stdin
中读取了所有数据。我该如何解决这个问题?谢谢!
code.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
答案 0 :(得分:2)
使用:
{ echo -e -n '1324'; cat; } | ./code.py
首先echo
将文字字符串写入管道,然后cat
将从标准输入读取并将其复制到管道。 python脚本会将此全部视为标准输入。
答案 1 :(得分:1)
您无法通过stdin(重定向)发送数据,然后返回交互模式。
执行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()