2011-02-07 4 views
0

私は正しい用語を知らないので、これをどのように達成できるかを調べるのは少し難しいです。Pythonで「更新」されたコマンドラインステータスバーを作る方法

通常、コマンドラインプログラムは行のテキストを印刷するだけです。ただし、テキストが更新されることがあります。良い例はgit pullまたはwgetです。一例として、

[> ] 25% 
[-> ] 50% 
[--> ] 75% 
[--->] 100% 

しかし、その後、時間の経過とともに変化する同じ行に。

私はこのようなことをPythonでどうやって作れますか?それ

(私はこれは少なくともUbuntuの上で仕事をしたいが、クロスプラットフォームが素敵です。)...私は、ステータスバーを作りたい、これよりも複雑である必要はありません

答えて

3

魔法は\r文字で、a.k.a.キャリッジリターン、a.k.a.は現在の行の先頭に戻ります。

from __future__ import print_function 
import time  

for i in xrange(1, 100): 
    print('[{0:10}]'.format('-' * (i/10)), end = '\r') 
    time.sleep(0.1) 

も、より高度な(Windows上のコンソールAPIを介して、またはANSIエスケープコード)コンソールへの出力を管理するための方法があります - 彼らはあなたが自由にカーソルを移動し、テキストは色のような属性を変更することができます。

+0

これは標準のbash端末では機能しません。 –

0

印刷 "進捗テキスト\ rを"、

お知らせ新しい行を抑制し、末尾のカンマ。

+0

これは私のBash端末では何もしないようです。 –

+0

@Peter Smit:面白いです。それはWindows上で正常に動作します。キャッシングリターンキャラクターをサポートしていない限り、なぜBashでうまくいかないのかわかりません。 –

+0

私は本当に驚いていません。 Unixはその行末に\ nのみを使用しています... –

関連する問題