您可以使用管道从程序的标准输出读取数据并将其写入所需的所有位置:
import sysimport subprocesslogfile = open('logfile', 'w')proc=subprocess.Popen(['cat', 'file'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)for line in proc.stdout: sys.stdout.write(line) logfile.write(line)proc.wait()更新
在python
3中,该
universal_newlines参数控制管道的使用方式。如果为
False,则管道读取返回
bytes对象,并且可能需要解码(例如
line.depre('utf-8'))以获取字符串。如果True,python为您解码
在版本3.3中进行了更改:当Universal_newlines为True时,该类使用编码locale.getpreferredencoding(False)而不是locale.getpreferredencoding()。有关此更改的更多信息,请参见io.TextIOWrapper类。



