ホームページ >バックエンド開発 >Python チュートリアル >以前の出力を上書きせずに、Python でカスタマイズ可能なターミナル テキスト プログレス バーを作成する方法
問題:
コンソール アプリケーションで、進行状況を表示するにはどうすればよいですか?ファイルが ftplib を使用してアップロードまたはダウンロードされるときに、以前に印刷されたものを妨げることなくバーが表示されます。 text?
解決策:
コンソール出力を保持しながら更新するカスタマイズ可能な進行状況バーを作成するには、次の点を考慮してください:
オプション 1 :単一呼び出し
def progressBar(iterable, prefix="", suffix="", decimals=1, length=100, fill="█", printEnd="\r"): """ Single-call progress bar function. Args: iterable (Iterable): Iteratable object. prefix (str): Prefix string. suffix (str): Suffix string. decimals (int): Number of decimals in percent complete. length (int): Character length of bar. fill (str): Fill character. printEnd (str): End character. """ total = len(iterable) def printProgressBar(iteration): percent = "{0:.{1}f}".format(100 * (iteration / float(total)), decimals) filledLength = int(length * iteration // total) bar = fill * filledLength + "-" * (length - filledLength) print(f"\r{prefix} |{bar}| {percent}% {suffix}", end=printEnd) printProgressBar(0) for i, item in enumerate(iterable): yield item printProgressBar(i + 1) print()
使用例:
import time items = list(range(57)) for item in progressBar(items, prefix="Progress:", suffix="Complete", length=50): # Do stuff... time.sleep(0.1)
オプション 2: 複数呼び出し
def printProgressBar(iteration, total, prefix="", suffix="", decimals=1, length=100, fill="█", printEnd="\r"): """ Progress bar printing function. Args: iteration (int): Current iteration. total (int): Total iterations. prefix (str): Prefix string. suffix (str): Suffix string. decimals (int): Number of decimals in percent complete. length (int): Character length of bar. fill (str): Fill character. printEnd (str): End character. """ percent = "{0:.{1}f}".format(100 * (iteration / float(total)), decimals) filledLength = int(length * iteration // total) bar = fill * filledLength + "-" * (length - filledLength) print(f"\r{prefix} |{bar}| {percent}% {suffix}", end=printEnd) if iteration == total: print()
例使用法:
import time items = list(range(57)) # Initial call to print 0% progress printProgressBar(0, len(items), prefix="Progress:", suffix="Complete", length=50) for i, item in enumerate(items): # Do stuff... time.sleep(0.1) printProgressBar(i + 1, len(items), prefix="Progress:", suffix="Complete", length=50)
どちらのオプションも、以前のコンソール出力を上書きせずに動的に更新されるカスタマイズ可能な進行状況バーを提供します。
以上が以前の出力を上書きせずに、Python でカスタマイズ可能なターミナル テキスト プログレス バーを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。