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
Lepaskan: 2024-12-06 07:58:10
asal
533 orang telah melayarinya

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()
Salin selepas log masuk

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)
Salin selepas log masuk

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()
Salin selepas log masuk

Keserasian Python 2:

Untuk keserasian dengan Python 2, tambahkan yang berikut pada bahagian atas skrip anda :

# -*- coding: utf-8 -*-
Salin selepas log masuk

Ganti pemformatan rentetan Python 3 dalam fungsi bar kemajuan dengan berikut:

print('%\r%s |%s| %s%% %s' % (prefix, bar, percent, suffix), end=printEnd)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan