Как я могу отобразить вывод в пейджере после команды git? - PullRequest
3 голосов
/ 15 ноября 2011

Я создаю сценарий, который должен использоваться с git, чтобы вывод отправлялся на пейджер после команды git.Я хотел бы сделать это с помощью Python.

У меня есть скрипт Python, который пишет в стандартный вывод.Теперь я хотел бы отобразить его вывод в пейджере, который пользователь установил в git.

Я знаю, что всегда могу предоставить скрипт-обертку, который делает это:сделать это из питона?

Ответы [ 2 ]

2 голосов
/ 21 декабря 2011

Вам даже не нужно создавать временный файл (вместо него используется pipe):

import subprocess

proc=subprocess.Popen('less', stdin=subprocess.PIPE)
lines=(str(i) for i in range(1000))
proc.stdin.write('\n'.join(lines))
proc.stdin.close()
proc.communicate()
2 голосов
/ 15 ноября 2011

git любит записывать вещи во временные файлы, а затем передавать имя файла в ловушки git. Таким образом, следуя этому шаблону, вы можете просто записать свой вывод во временный файл и вызвать less с subprocess.Popen:

import subprocess
import tempfile

lines=(str(i) for i in range(1000))
f=tempfile.NamedTemporaryFile(mode='w')
f.write('\n'.join(lines))
f.flush()
proc=subprocess.Popen(['less',f.name])
proc.communicate()
f.close()  # deletes the temporary file
...