我想写一个Python程序,它启动一个外部程序ET - 不是我写的 - 并使用它的输出来存储执行一些计算。
我知道可以使用模块子进程及其call()方法。然而我的问题是ET的输出很大(如果我在shell中启动程序并将其输出重定向到文件,我得到一个25GB大小的文件。)。
因此,我希望能够对ET的输出执行操作,因为它们是“生成”的,并且避免保存大文件。
我该怎么做?如果有多种方式,为我选择最佳选择需要考虑哪些问题?
答案 0 :(得分:1)
子流程应该照顾您的需求。 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
数百万是我编写的一个快速测试程序,用于打印0到9999999之间的数字,只是需要一段时间并产生大量输出。
要考虑的另一个选择是使用命令行管道。您可以使用sys.stdin,以便可以将程序的输出传递到python脚本中。
How to make a python script "pipeable" in bash?
是如何使这项工作的一个例子。