Хочу отправить контент файла на вход утилите и прочитать её 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), то всё ок.