Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Membuat Bar Kemajuan Teks dalam Terminal Menggunakan Python?

Bagaimanakah Saya Boleh Membuat Bar Kemajuan Teks dalam Terminal Menggunakan Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-06 07:58:10530semak imbas

How Can I Create a Text Progress Bar in the Terminal Using Python?

Bar Kemajuan Teks dalam Terminal dengan Aksara Blok

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.

Bar Kemajuan Mudah dan Boleh Disesuaikan

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()

Sampel Penggunaan:

# 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)

Versi Panggilan Tunggal:

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()

Keserasian Python 2:

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn