python:从标准输入读取数据,raw_input
python: read data from stdin and raw_input
我想使用 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
您只是不能通过标准输入(即重定向)发送数据然后返回交互模式。
当您执行 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()
使用:
{ echo -e -n '1324'; cat; } | ./code.py
首先echo
将文字字符串写入管道,然后cat
将从标准输入读取并将其复制到管道。 python 脚本会将这一切视为其标准输入。
我想使用 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
您只是不能通过标准输入(即重定向)发送数据然后返回交互模式。
当您执行 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()
使用:
{ echo -e -n '1324'; cat; } | ./code.py
首先echo
将文字字符串写入管道,然后cat
将从标准输入读取并将其复制到管道。 python 脚本会将这一切视为其标准输入。