LINUX.ORG.RU

Python + Popen...


0

0

Хочу отправить контент файла на вход утилите и прочитать её stdout , получается примерно так

with open(path, 'rb') as me:
    me.seek(0,2)
    me.seek(0,0)

    r = Popen([bin, arg1, arg2...], stdin=me, stdout=PIPE)
    data = r.stdout.read()

    print len(data)

Работает ожидаемо за исключением мелких файлов до пары кб. Если в качествет bin взять, например, bzip2, то на выходе получаются всегда 14б. Где тут могут быть грабли? seek там стоят не просто так, если не использовать seek(0,2), то всё ок.


Ответ на: комментарий от baverman

>Это и есть subprocess

Ох ты ж черт! Давно ничего не писал…

fat_angel ★★★★★ ()
Ответ на: комментарий от true_admin

Чем-то похоже на мой трабл, но немного не то. Костыль нашёл в виде me.flush(), но всё равно как-то неприятно...

mikki ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.