Python运行二进制和拦截文件写入(使用子进程)

时间:2012-11-23 15:13:27

标签: python subprocess

我有一个简单的命令行实用程序,可以在控制台和文件系统上生成输出。虽然我非常清楚如何捕获控制台输出,但我不知道如何拦截文件 - 我事先知道文件名。

我想保持执行“在内存中”而不触及文件系统,因为我立即解析并删除创建的文件,这会造成不必要的瓶颈(特别是当我需要运行数百万次的小工具时)。

所以,总而言之,我正在努力实现以下目标:

  1. 使用python的subprocess
  2. 运行二进制文件
  3. 捕获工具的输出和它创建的文件的内容(在当前工作目录中使用预先知道的名称)
  4. 理想情况下,在不触及文件系统的情况下运行它。

1 个答案:

答案 0 :(得分:0)

由于您只需要支持Linux,因此可以使用命名管道。我们的想法是将输出文件预创建为命名管道,并让您的流程从管道中读取工具的输出。

例如,请参阅Introduction to Named Pipes

Python API为os.mkfifo()