2016-08-05 10 views
1

python shモジュールは、出力を表示する前にコマンドまたは少なくとも行が終了するまで待つようです。コマンドの出力をどのように表示するには?python shモジュールを使用して、コマンドの出力をどのように表示できますか?

これまで私が試したことは次のとおりです。これはshを使ってgitクローニングのためです。

for line in sh.git.clone(url, '--progress', '--recursive', _err_to_out=True, _iter=True): 
    print(line) 

そして、これは、それが完了しています後にすべてのラインを出力しますが、リアルタイムでそれを印刷しません。だから、私が何かをクローンしているときは、それが返される前に行が終了するのを待っているので、クローンの進行状況は表示されません。 shモジュールでコマンドの進捗状況をリアルタイムで出力させるにはどうすればよいですか?

+0

は、私はちょうど上記を試みたが、リアルタイムで物事をプリントアウトしているようです。たとえば、https://asciinema.org/a/7l5z4phh3tw94mphvkqko9oexです。異なる動作が見られる場合は、お使いの環境に関する詳細情報(pythonバージョン、オペレーティングシステムなど)を教えてください。 – larsks

答えて

4

_out_bufsizeパラメータを使用してください。リモート 'some_project' へのクローニング

...
:カウントオブジェクト:70796、行って私の場合は は、100 ...

for line in sh.git.clone(url, '--progress', '--recursive', _err_to_out=True, _iter=True, _out_bufsize=100): 
    print(line) 

出力でOK動作します。
リモート:0
遠隔:圧縮オブジェクト:1%(20259分の203)
遠隔:圧縮オブジェクト:3%(20259分の608)
遠隔:圧縮オブジェクト:5%(20259分の1013)オブジェクトを圧縮
リモート:圧縮オブジェクト:7%(20259分の1419)
リモート:オブジェクト圧縮:9%(20259分の1824)

関連する問題