2011-11-15 115 views
3

我构建了一个应该和git一起使用的脚本,以便在git命令之后将输出发送到寻呼机。我想用Python来做到这一点。如何在git命令后在传呼机中显示输出?

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

我知道我可以始终提供一个包装脚本,这是否:

git-whatever | less 

有没有办法从蟒蛇内做到这一点?

回答

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

这更好!谢谢! –

2

git喜欢将东西写入临时文件,然后将文件的名称传递给git钩子。所以,下面这个模式,你可以只写你的输出到一个临时文件,并调用lesssubprocess.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 
+0

这似乎很干净。我会尝试一下。 –

相关问题