2011-11-15 19 views
3

gitで使用するスクリプトを作成し、gitコマンドの後に出力がページャーに送信されるようにします。私はこれをPythonを使ってやりたいと思います。gitコマンドの後にページャーで出力を表示するにはどうしたらいいですか?

私はstdoutに書き込み、Pythonスクリプトを持っています。今私はgitでユーザが設定したページャにその出力を表示したいと思います。

私はいつもこれを行うラッパースクリプトを提供することができます知っている:

git-whatever | less 

は、Pythonの中からこれを実行する方法はありますか?

答えて

2

:だから、そのパターンを、次の、あなただけの一時ファイルへのあなたの出力を書くことができ、そしてlesssubprocess.Popenで呼び出す

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 hooksにファイル名を渡したりします。 (代わりにパイプを使用して)あなたも、一時ファイルを作成する必要はありません

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

それはかなりきれいに見えます。やってみます。 –

関連する問題