我有一些数据要 gzip、uuencode 然后打印到标准输出。我基本上拥有的是:
compressor = Popen("gzip", stdin = subprocess.PIPE, stdout = subprocess.PIPE)
encoder = Popen(["uuencode", "dummy"], stdin = compressor.stdout)
我向压缩器提供数据的方式是通过compressor.stdin.write(stuff)。
我真正需要做的是向压缩器发送 EOF,我不知道该怎么做。
在某些时候,我尝试了compressor.stdin.close() 但这不起作用——当压缩器直接写入文件时效果很好,但在上述情况下,进程不会终止并在压缩器上停止。等待()。
建议?在这种情况下,gzip 就是一个例子,我真的需要做一些事情,将一个进程的输出通过管道传输到另一个进程。
注意:我需要压缩的数据不适合内存,所以在这里交流并不是一个好的选择。另外,如果我只是跑
compressor.communicate("Testing")
在上面的 2 行之后,它仍然挂起错误
文件“/usr/lib/python2.4/subprocess.py”,第 1041 行,在通信中 rlist, wlist, xlist = select.select(read_set, write_set, [])