2012-01-31 45 views
3

我正在写一个python程序,它会产生一个子进程来基本克隆一个日志文件。我有2.7的工作代码,但由于供应商的限制,我不得不使用Python 2.3,所以使用子进程模块出了问题使用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

+0

的文件似乎非常清楚。 http://docs.python.org/release/2.3/lib/module-popen2.html应该有你需要的所有信息。什么部分令人困惑? – 2012-01-31 16:41:51

回答

2

这取决于你在做什么,但执行命令的旧方式是使用os.popen。它的工作原理是这样的:

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

还有的os模块中的popen其他版本,即做这样的事情返回一个包含stdinstdout,或含有stdinstdout,并stderr 3元组的2元组。有关更多详细信息,请参阅docs,并让我知道这是否无效。

这里有一个如何使用popen2一个例子:

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

我对这个部分还可以,这是将STDOUT转换成我不确定的文件。 – AltGrendel 2012-01-31 17:51:47

+0

感谢senderle。这就是我需要的。 – AltGrendel 2012-01-31 18:05:33