使用python子进程多次调用/ dev / stdin(* nix)

时间:2011-01-09 22:41:20

标签: python pipe subprocess

我有一个python子进程调用,我想连接三个管道(两个标准输入和一个标准输出)。我知道只有一个/ dev / stdin,但是/ dev中的所有其他设备我都不知道,并且不知道任何python os,sys或subprocess模块​​将以一种方式利用它们允许我将设备路径提供给subprocess.Popen。
我问的原因是因为我想管道来自mysql数据库或tar存档的信息,而不是我目前拥有的目录结构,其中有28,000个目录。目录名单独使用了很多空间!另一种方法是tar / gunzip整个目录结构并通过压缩存档进行操作。无论是解决方案,mysql还是tar,我仍然希望有两个管道进入subprocess.Popen和一个out,这样我就可以绕过硬盘了。
需要一个例子吗?

1 个答案:

答案 0 :(得分:3)

在Unix系统上,一个方便的选择是使用named pipe。它看起来像一个文件,但在磁盘上不占用空间;你可以用一个进程写入它并用另一个进程读取它,就像管道一样。你可以让你的子进程只做普通的文件I / O; Unix(Mac OS / Linux)将为您做繁重的工作。

% mkfifo foo
% cat giantFile > foo &
[1] 4667
% wc -l foo
100