Найти - Пользователи
Полная версия: Поймать вывод patch
Начало » Python для экспертов » Поймать вывод patch
1
Enchantner
Вызываю никсовый patch через subprocess. Прикол в том, что он пишет вывод только в файл, но никак не на стандартный вывод, что бы я не делал. Патчится один файл, но он громадный и хочется операцию всю с ним провести на лету, без сохранения в tmp. Как провести операцию с максимально возможной производительностью? Файл, который патчится, размером около ста метров, да и сам патч немаленький.
Enchantner
Пытаюсь, опять же, сделать через named pipes, вот так:
fifo = os.path.join(self.path, 'pipe')
print fifo
os.mkfifo(fifo)
op = os.popen('cat '+ fifo)
proc = Popen(['patch', current_keyframe, '--input='+fpath, '--output='+fifo], stdin=PIPE, stdout=PIPE)
os.unlink(fifo)
print op.read()
В pipe попадает правильно пропатченный кейфрейм, однако на месте вызова Popen скрипт зависает. Что не так?
Enchantner
Все, справился сам.
        if not key:
fifo = os.path.join(self.path, 'pipe')
os.mkfifo(fifo)
op = os.popen('cat '+ fifo)
proc = call(['patch', current_keyframe, '--input='+fpath, '--output='+fifo])
os.unlink(fifo)
dmp = op.read()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB