我想写一个Python程序,它启动一个外部程序ET——不是我写的——并使用它的输出来存储执行一些计算。
我知道模块子进程及其call()方法可以使用。然而,我的问题是,ET的输出是巨大的(如果我在shell中启动程序并将其输出重定向到一个文件,我得到一个25GB大小的文件)。
因此,我希望能够在ET的输出上执行操作,因为它们是"产生的",并避免保存一个巨大的文件。
我该怎么做?如果有多种选择,我需要考虑哪些问题来选择最适合我的选择?
Subprocess应该满足您的需求。http://docs.python.org/2/library/subprocess.html module-subprocess
p = subprocess.Popen("millions.exe", stdout=subprocess.PIPE)
i = 0
for line in p.stdout:
i+=1
millions是我编写的一个快速测试程序,用于打印从0到9999999的数字,只是为了花一些时间并生成大量输出。
另一个可以考虑的选择是使用命令行管道。你可以用sys。为了能够将程序的输出管道到您的python脚本中。
如何制作一个python脚本"管道"在bash中?
是如何使此工作的一个示例。