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

使用python子进程(*nix)多次调用/dev/stdin,python,pipe,subprocess,Python,Pipe,Subprocess,我有一个python子流程调用,我想将其链接到三个管道(两个标准输入和一个标准输出)。我知道只有一个/dev/stdin,但在/dev中还有所有其他设备,我不知道,也不知道有任何python os、sys或子流程模块会以允许我给出subprocess.Popen的设备路径的方式使用它们 我问这个问题的原因是因为我想通过管道从mysql数据库或tar归档中获取信息,而不是从我目前拥有的目录结构中获取信息,该结构中的目录超过28000个。仅目录名就占用了大量空间!另一种方法是对整个目录结构进行tar

我有一个python子流程调用,我想将其链接到三个管道(两个标准输入和一个标准输出)。我知道只有一个/dev/stdin,但在/dev中还有所有其他设备,我不知道,也不知道有任何python os、sys或子流程模块会以允许我给出subprocess.Popen的设备路径的方式使用它们
我问这个问题的原因是因为我想通过管道从mysql数据库或tar归档中获取信息,而不是从我目前拥有的目录结构中获取信息,该结构中的目录超过28000个。仅目录名就占用了大量空间!另一种方法是对整个目录结构进行tar/gunzip压缩,并在压缩的归档文件中进行操作。对于mysql或tar这两种解决方案,我仍然希望有两个管道进入subprocess.Popen,一个管道输出,这样我就可以绕过HDD。

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

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

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

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

不要害怕标点符号。:)不要害怕标点符号。:)酷,我以前从未使用过mkfifo或wc。。我们必须调查他们。谢谢:)我昨晚在床上看到了你发送的命名管道页面后,有了一个愉快的时刻。。。这就是如何使我所有的代码窗口兼容!我一直依赖于将/dev/stdin&/dev/stdout作为子进程调用的路径名。这是windoze的补丁!令人惊叹的!再次感谢!要是我调用的程序也有windows可执行文件/安装程序就好了……该死。python的os.mkfifo()仅在Unix操作系统上。但是,找到了以下链接:-酷,我以前从未使用过mkfifo或wc。。我们必须调查他们。谢谢:)我昨晚在床上看到了你发送的命名管道页面后,有了一个愉快的时刻。。。这就是如何使我所有的代码窗口兼容!我一直依赖于将/dev/stdin&/dev/stdout作为子进程调用的路径名。这是windoze的补丁!令人惊叹的!再次感谢!要是我调用的程序也有windows可执行文件/安装程序就好了……该死。python的os.mkfifo()仅在Unix操作系统上。但是,我们发现了以下链接:-