Перевод кода с использованием подпроцесса в Python 2.7 в Python 2.3 - PullRequest
3 голосов
/ 31 января 2012

Я пишу программу на python, которая порождает подпроцесс для клонирования файла журнала. У меня есть рабочий код в 2.7, но из-за ограничений поставщика, я вынужден использовать Python 2.3, поэтому использование модуля подпроцесса исключено .

Мне нужна помощь в переводе:

self.FILE_OUT =  open(self.file2write,"a" )
self.FILE_IN=subprocess.Popen( self.file2process,
               stdout=self.FILE_OUT,
               bufsize=0,
               shell=True)

в код 2.3.

Я не понимаю, как это сделать stdout=self.FILE_OUT.

1 Ответ

2 голосов
/ 31 января 2012

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

>>> echo_stdout = os.popen('echo foo', 'r')
>>> echo_stdout.read()
'foo\n'

В модуле os есть и другие версии popen, которые выполняют такие вещи, как возврат 2-кортежа, содержащего stdin и stdout, или 3-кортеж, содержащий stdin, stdout и stderr.См. документы для получения более подробной информации и дайте мне знать, если это не поможет.

Вот пример использования popen2:

>>> cat_stdin, cat_stdout = os.popen2('cat')
>>> cat_stdin.write('foo\n')
>>> cat_stdin.close()
>>> cat_stdout.read()
'foo\n'
...