как объединить несколько файлов для stdin of Popen

Я портирую bash-скрипт на python 2.6 и хочу заменить какой-то код:

cat $( ls -tr xyz_`date +%F`_*.log ) | filter args > bzip2

Думаю, мне нужно что-то похожее на пример «Замена трубопровода оболочки» на http://docs.python.org/release/2.6/library/subprocess.html , аля ...

p1 = Popen(["filter", "args"], stdin=*?WHAT?*, stdout=PIPE)
p2 = Popen(["bzip2"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]

Но я не уверен, как лучше всего предоставить значение p1 stdin , чтобы оно объединяло входные файлы. Кажется, я мог бы добавить ...

p0 = Popen(["cat", "file1", "file2"...], stdout=PIPE)
p1 = ... stdin=p0.stdout ...

... но это, похоже, выходит за рамки использования ( медленные, неэффективные) каналы для вызова внешних программ со значительной функциональностью. (Любая достойная оболочка выполняет cat внутри.)

Итак, Я могу представить собственный класс, который удовлетворяет требованиям API файлового объекта и, следовательно, может использоваться для stdin p1, объединяя произвольные другие файловые объекты. ( РЕДАКТИРОВАТЬ: существующие ответы объясняют, почему это невозможно )

Имеет ли python 2.6 механизм, удовлетворяющий эту потребность / желание, или может другой Попен в cat считаться прекрасным в кругах питонов?

Спасибо.

9
задан Tony Delroy 18 May 2011 в 09:58
поделиться