1

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

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

因此,我希望能够在 ET 的输出“生成”时对其执行操作,并避免保存一个巨大的文件。

我怎样才能做到这一点?如果有多种方法,为我选择最佳选择需要考虑哪些问题?

4

1 回答 1

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 脚本中。

如何在 bash 中使 python 脚本“可管道化”?

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

于 2013-03-27T01:25:12.987 回答