Mencari kaedah yang sesuai untuk menggambarkan kemajuan muat turun dan muat naik dalam terminal tanpa memadamkan output sebelumnya boleh menjadi tugas biasa. Artikel ini meneroka penyelesaian Python untuk mencipta bar kemajuan atau visualisasi serupa yang menghasilkan ke konsol sambil mengekalkan output program sebelumnya.
Untuk bar kemajuan tujuan umum, anda boleh menggunakan fungsi Python berikut:
def printProgressBar(iteration, total, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): """ Call in a loop to create a terminal progress bar @params: iteration - Required : current iteration (Int) total - Required : total iterations (Int) prefix - Optional : prefix string (Str) suffix - Optional : suffix string (Str) decimals - Optional : positive number of decimals in percent complete (Int) length - Optional : character length of bar (Int) fill - Optional : bar fill character (Str) printEnd - Optional : end character (e.g. "\r", "\r\n") (Str) """ percent = ("{0:.{dec}f}".format(100 * (iteration / float(total)), dec=decimals)) filledLength = int(length * iteration / total) bar = fill * filledLength + '-' * (length - filledLength) print(f'\r{prefix} |{bar}| {percent}% {suffix}', end=printEnd) if iteration == total: print()
# A List of Items items = list(range(0, 57)) l = len(items) printProgressBar(0, l, prefix='Progress:', suffix='Complete', length=50) for i, item in enumerate(items): # Do stuff... # Update Progress Bar printProgressBar(i + 1, l, prefix='Progress:', suffix='Complete', length=50)
def progressBar(iterable, prefix='', suffix='', decimals=1, length=100, fill='█', printEnd='\r'): """ Call in a loop to create a terminal progress bar @params: iterable - Required : iterable object (Iterable) prefix - Optional : prefix string (Str) suffix - Optional : suffix string (Str) decimals - Optional : positive number of decimals in percent complete (Int) length - Optional : character length of bar (Int) fill - Optional : bar fill character (Str) printEnd - Optional : end character (e.g. "\r", "\r\n") (Str) """ total = len(iterable) def printProgressBar(iteration): percent = ("{0:.{dec}f}".format(100 * (iteration / float(total)), dec=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()
Untuk keserasian dengan Python 2, tambahkan yang berikut pada bahagian atas skrip anda :
# -*- coding: utf-8 -*-
Ganti pemformatan rentetan Python 3 dalam fungsi bar kemajuan dengan berikut:
print('%\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membuat Bar Kemajuan Teks dalam Terminal Menggunakan Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!