我想编写一个 Python 程序来启动一个外部程序 ET——不是我写的——并使用它的输出来存储执行一些计算。
我知道可以使用模块子进程及其 call() 方法。然而,我的问题是 ET 的输出很大(如果我在 shell 中启动程序并将其输出重定向到一个文件,我会得到一个 25GB 大小的文件。)。
因此,我希望能够在 ET 的输出“生成”时对其执行操作,并避免保存一个巨大的文件。
我怎样才能做到这一点?如果有多种方法,为我选择最佳选择需要考虑哪些问题?
我想编写一个 Python 程序来启动一个外部程序 ET——不是我写的——并使用它的输出来存储执行一些计算。
我知道可以使用模块子进程及其 call() 方法。然而,我的问题是 ET 的输出很大(如果我在 shell 中启动程序并将其输出重定向到一个文件,我会得到一个 25GB 大小的文件。)。
因此,我希望能够在 ET 的输出“生成”时对其执行操作,并避免保存一个巨大的文件。
我怎样才能做到这一点?如果有多种方法,为我选择最佳选择需要考虑哪些问题?
子流程应该照顾您的需求。 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 脚本中。
是如何使这项工作的一个例子。