问题描述
以下代码非常适合Python3。它将立即将用户输入输出到控制台。
import sys
for line in sys.stdin:
print (line)
不幸的是,它似乎不适用于Python 2.7和2.6(是的,我确实更改了print命令)-它只是不会输出我的行
我是在犯一些愚蠢的错误,还是有其他方法可以使它在较低版本的Python中工作?
1楼
您可以使用iter
和sys.stdin.readline
来直接获取输出,类似于python3中的行为:
import sys
for line in iter(sys.stdin.readline,""):
print(line)
""
是一个前哨值,当达到EOF或在Unix上输入CTRL-D或在Windows上输入CTRL-Z时,它将中断我们的循环。
2楼
通过导入 ,可以使类Unix系统上的用户更好用它,它为您提供了行编辑功能,包括历史记录。
但是您必须使用raw_input()
(或Python 3上的input()
),而不是sys.stdin.readline()
。
import readline
while True:
try:
print raw_input()
except EOFError:
break
按Ctrl D可以通过EOF干净地终止程序。
3楼
好的,我在找到了解决方案。
import sys
while 1:
try:
line = sys.stdin.readline()
except KeyboardInterrupt: # Ctrl+C
break
if not line: # EOF
break
print line, # avoid adding newlines (comma: softspace hack)
有点搞砸了,是编织物吗? :)