在python中处理stdout

时间:2011-04-05 14:37:24

标签: python

我有一个脚本继续将一些值转储到屏幕上。让我们调用这个脚本1

我需要将转储到屏幕的值由另一个python脚本处理。让我们调用这个脚本2。我脚本1不能停止

我目前使用 python 2.2 ,所以如果有人可以在不使用子流程的情况下提供示例,那就太棒了

脚本1看起来像这样

import sys
import os
i = 0
while 1:
    print i
    sys.stdout.write(str(i)+"\n")
        i = i + 1

我需要编写script2,以便script1生成的每个输出都由script2处理

- 编辑 -

我需要它在遗留实现上运行,即只有Windows XP中提供的命令提示符没有电源shell

2 个答案:

答案 0 :(得分:7)

我不打算在这里谈论代码设计,因为我真的不知道你在做什么。

但是对于script2.py:

import sys
for line in sys.stdin:
    print "From stdin:", line

然后运行(至少在unix / linux上,如果你在windows上,google“在powershell中管道”):

python script1.py | python script2.py

或者你想在一个python脚本中做到这一点?您可以通过简单地将其替换为具有所有必要方法(sys.stdout等)的类来重新管道write

答案 1 :(得分:2)

我想你想逐行处理:

# script2.py
import sys

for line in sys.stdin:
     print line # do something here with line

[edit]最后,你只需管道它们:

python script1.py | python script2.py