обработка стандартного вывода в python

#python

#python

Вопрос:

У меня есть скрипт, который продолжает выводить некоторые значения на экран. Давайте вызовем этот скрипт 1

Мне нужно, чтобы значения, которые выводятся на экран, обрабатывались другим скриптом python.Давайте вызовем этот script2. I Script1 не может быть остановлен

В настоящее время я использую 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

Комментарии:

1. Какую операционную систему вы используете?

Ответ №1:

Я не собираюсь здесь ничего говорить о дизайне кода, потому что я действительно не знаю, над чем вы работаете.

Но для script2.py:

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

А затем запустите (по крайней мере, в unix / linux, если вы в Windows, погуглите «конвейеризация в powershell»):

 python script1.py | python script2.py
  

Или вы хотели сделать это в рамках одного скрипта на python? Вы могли бы выполнить повторную передачу sys.stdout , просто заменив его классом, который имеет все необходимые методы ( write и т.д.).

Ответ №2:

Я предполагаю, что вы хотите обрабатывать построчно:

 # script2.py
import sys

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

[редактировать] Наконец, вы просто передаете их:

 python script1.py | python script2.py