我构建了一个应该与git一起使用的脚本,以便在git命令之后将输出发送到寻呼机。我想用Python做到这一点。
我有一个写入stdout的python脚本。现在我想在用户在git中设置的寻呼机中显示其输出。
我知道我总是可以提供一个执行此操作的包装脚本:
git-whatever | less
有没有办法在python中做到这一点?
答案 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()