Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mencipta Bar Kemajuan Teks Terminal yang Boleh Disesuaikan dalam Python tanpa Mengganti Output Sebelumnya?

Bagaimana untuk Mencipta Bar Kemajuan Teks Terminal yang Boleh Disesuaikan dalam Python tanpa Mengganti Output Sebelumnya?

Patricia Arquette
Lepaskan: 2024-12-03 09:44:14
asal
186 orang telah melayarinya

How to Create a Customizable Terminal Text Progress Bar in Python without Overwriting Previous Output?

Bar Kemajuan Teks Terminal dengan Aksara Blok

Masalah:

Dalam aplikasi konsol, bagaimana seseorang boleh memaparkan kemajuan bar semasa fail dimuat naik atau dimuat turun menggunakan ftplib, tanpa mengganggu cetakan sebelum ini teks?

Penyelesaian:

Untuk mencipta bar kemajuan boleh disesuaikan yang dikemas kini sambil mengekalkan output konsol, pertimbangkan perkara berikut:

Pilihan 1 : Panggilan Tunggal

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

Contoh Penggunaan:

import time

items = list(range(57))

for item in progressBar(items, prefix="Progress:", suffix="Complete", length=50):
    # Do stuff...
    time.sleep(0.1)
Salin selepas log masuk

Pilihan 2: Berbilang Panggilan

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

Contoh Penggunaan:

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

Kedua-dua pilihan menyediakan bar kemajuan yang boleh disesuaikan yang dikemas kini secara dinamik tanpa menulis ganti konsol sebelumnya keluaran.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta Bar Kemajuan Teks Terminal yang Boleh Disesuaikan dalam Python tanpa Mengganti Output Sebelumnya?. 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