11

私のpythonスクリプトが大きなファイルを処理しているときに、進行状況をユーザーに表示したいと思います。

'\', "|', '/'進行状況を示すために、シェルの同じカーソル位置にスクリプトが印刷されているのを見ました。

どうすればPythonでそれを行うことができますか?

4

7 に答える 7

18

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%
于 2012-11-22T22:13:14.710 に答える
12

シンプルな「無限スピナー」の実装:

import time
import itertools

for c in itertools.cycle('/-\|'):
    print(c, end = '\r')
    time.sleep(0.2)
于 2012-11-22T22:32:44.373 に答える
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!」が出力されます。

于 2012-11-22T22:15:03.910 に答える
0

楽しみのためにこれを作りました。回転するバーとテキストの読み込みが表示されます。このような:

|         
\ 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)
于 2012-11-26T18:53:18.373 に答える