我有一个简单的python程序如下:
import sys
for line in sys.stdin.readlines():
print (line)
我正在使用os x el capitan处理mac。我有Python 2.7.10
当我在终端上的程序上运行它时,它会挂起。它不打印该行。
下图描述了该问题。该命令已在终端运行超过5分钟,但没有输出
请帮我理解这个问题。
由于
答案 0 :(得分:1)
你的代码试图从stdin读取,这意味着你需要至少pipe
到stdin的东西,在这里我稍微更改了你的代码并在script.py之后命名:
import sys
for line in sys.stdin.readlines():
print (line,1)
这是shell中的输出:
$printf "hello\nworld\n" | python script.py
('hello\n', 1)
('world\n', 1)
stdin,stdout和err一般是unix中的三个重要概念,我建议你阅读more。比方说,Hadoop Streaming实际上利用了stdin / stdout,因此您可以使用任何语言编写map reduce作业并轻松地将不同的组件连接在一起。
以下是如果您有文件,如何使代码正常工作的几个示例。
$ printf "hello\nworld\n" > text
$ cat text
hello
world
$ cat text | python script.py
('hello\n', 1)
('world\n', 1)
$ python script.py < text
('hello\n', 1)
('world\n', 1)