Ich habe ein kleines Kommandozeilenprogramm, das von stdin liest. Auf der Kommandozeile würde ich entweder...
./foo < bar
oder ...
cat bar | ./foo
Mit einer gezipten Datei kann ich Folgendes ausführen
zcat bar.gz | ./foo
in Python kann ich ...
Popen(["./foo", ], stdin=open('bar'), stdout=PIPE, stderr=PIPE)
aber ich kann es nicht tun
import gzip
Popen(["./foo", ], stdin=gzip.open('bar'), stdout=PIPE, stderr=PIPE)
Am Ende muss ich laufen
p0 = Popen(["zcat", "bar"], stdout=PIPE, stderr=PIPE)
Popen(["./foo", ], stdin=p0.stdout, stdout=PIPE, stderr=PIPE)
Mache ich etwas falsch? Warum kann ich gzip.open('bar') nicht als stdin-Arg für Popen verwenden?