Python 2.7:运行外部程序并解析其输出(当ext程序运行时)

时间:2013-03-25 11:52:16

标签: parsing python-2.7 stream subprocess

我想写一个Python程序,它启动一个外部程序ET - 不是我写的 - 并使用它的输出来存储执行一些计算。

我知道可以使用模块子进程及其call()方法。然而我的问题是ET的输出很大(如果我在shell中启动程序并将其输出重定向到文件,我得到一个25GB大小的文件。)。

因此,我希望能够对ET的输出执行操作,因为它们是“生成”的,并且避免保存大文件。

我该怎么做?如果有多种方式,为我选择最佳选择需要考虑哪些问题?

1 个答案:

答案 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?

是如何使这项工作的一个例子。