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、[])