如何在git命令后在寻呼机中显示输出?

时间:2011-11-15 14:51:06

标签: python git pager

我构建了一个应该与git一起使用的脚本,以便在git命令之后将输出发送到寻呼机。我想用Python做到这一点。

我有一个写入stdout的python脚本。现在我想在用户在git中设置的寻呼机中显示其输出。

我知道我总是可以提供一个执行此操作的包装脚本:

git-whatever | less

有没有办法在python中做到这一点?

2 个答案:

答案 0 :(得分:2)

git喜欢将内容写入临时文件,然后将文件名传递给git hooks。因此,遵循该模式,您可以将输出写入临时文件,并使用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

答案 1 :(得分:2)

您甚至不必创建临时文件(改为使用管道):

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()