web-dev-qa-db-ja.com

Pythonの修正可能なコンソール出力

一部のプログラムはコンソール出力を修正できますが、wgetは簡単に思い浮かびます。

enter image description here

どうすれば純粋なPythonでそれを行うことができますか? IPythonには clear_output() があります。私はそれを試しましたが、それでもうまくいきません。そして、私は純粋なPythonを好むでしょう。

from IPython.core.display import clear_output
from time import sleep

for i in range(100):
    clear_output()
    print '[', '='*i, ' '*(100-i), ']'
    sleep(0.1)

asciicast

5
ArekBulski

実際には、コマンドラインインターフェイスを作成できるパッケージがいくつかあります。 クリックには進行状況バーがあります を知っています。

ああ、あなたの要件「純粋なpython」に関して、私の友人はPythonでないものです。 Pythonは、サードパーティのパッケージを使用することを望んでいます。

asciicast

5
don.joey

適切なライブラリが最善の解決策ですが、簡単な代替案を示したいと思います。行末に\r(改行)の代わりに\n(キャリッジリターン)を使用して、カーソルが現在の行の先頭に配置されるようにします、次の行ではなく。

#! /usr/bin/python3

from time import sleep

for i in range(100):
    print('[' + '='*i + ' '*(100-i) + ']', end='\r')
    sleep(0.1)
11
muru

Helioにヒントを得たソリューションは素晴らしい作品です!最初にpip install progressbarする必要がありましたが、公式の例の1つは魅力のように機能します。

from progressbar import *    
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
    time.sleep(0.01)
    pbar.update(i+1)
pbar.finish()

公式サイト(例付き): https://code.google.com/p/python-progressbar/

6
ArekBulski