私のpythonスクリプトが大きなファイルを処理しているときに、進行状況をユーザーに表示したいと思います。
'\', "|', '/'
進行状況を示すために、シェルの同じカーソル位置にスクリプトが印刷されているのを見ました。
どうすればPythonでそれを行うことができますか?
私のpythonスクリプトが大きなファイルを処理しているときに、進行状況をユーザーに表示したいと思います。
'\', "|', '/'
進行状況を示すために、シェルの同じカーソル位置にスクリプトが印刷されているのを見ました。
どうすればPythonでそれを行うことができますか?
python-progressbarを使用する必要があります
次のように簡単に使用できます。
import progressbar as pb
progress = pb.ProgressBar(widgets=_widgets, maxval = 500000).start()
progvar = 0
for i in range(500000):
# Your code here
progress.update(progvar + 1)
progvar += 1
これにより、次のような進行状況バーが表示されます。
Progress: |#################################################### |70%
シンプルな「無限スピナー」の実装:
import time
import itertools
for c in itertools.cycle('/-\|'):
print(c, end = '\r')
time.sleep(0.2)
自分でロールしたい場合は、次のようにすることができます。
import sys, time
for i in range(10):
print ".", # <- no newline
sys.stdout.flush() #<- makes python print it anyway
time.sleep(1)
print "done!"
これにより、毎秒 1 つのドットが出力されてから、「done!」が出力されます。
楽しみのためにこれを作りました。回転するバーとテキストの読み込みが表示されます。このような:
|
\ l
- lo
/ loa
| load
\ loadi
- loadin
/ loading
コードはWindowsでテストされました。
'''
Spinner and a text showing loading.
'''
import sys
import time
def looper(text):
sys.stdout.write('\r')
sys.stdout.write(text)
sys.stdout.flush()
spinner = ["|", "\\" , "-", "/" ]
loading = ['l','o','a','d','i','n','g']
spin_1 = len(spinner)
spin_2 = len(loading) + 1
print("Starting program...")
for x in range(100):
spin_2mod = x%spin_2
looper(spinner[x%spin_1] + " " + "".join(loading[0: (spin_2mod) ]) + (" " * (spin_2 - spin_2mod)))
time.sleep(0.5)
print("\nExiting program...")
time.sleep(2)