Option [Python] zum Deaktivieren der Ausgabe von click.progressbar

Wenn Sie die Konsolen-App in Python verwenden, können Sie mit Klicken auf Fortschrittsleiste den Fortschritt bei längerer Arbeit visualisieren.

In einigen Fällen möchten Sie jedoch möglicherweise die Ausgabe des Fortschrittsbalkens mit einem optionalen Argument aktivieren / deaktivieren, wenn Sie eine Verarbeitungsfunktion, die ursprünglich den Fortschrittsbalken verwendet hat, in den Serverprozess oder die Stapelverarbeitung einfügen.

Hier sind einige Codemuster, die in solchen Fällen verwendet werden können. => Ich habe eine Technik gefunden, um / dev / null für file anzugeben, also ist das die erste ...

Einfache Verwendung im UNIX-System

import sys
import click


def something(items, show_progress=False):
    out = sys.stdout if show_progress else open('/dev/null', 'wb')
    with click.progressbar(items, file=out) as bar:
        for item in bar:
            'abcd' * (1024 * 10)


items = list(xrange(10000))
something(items, show_progress=True)
print '--------'
something(items, show_progress=False)

Es scheint, dass Sie das Ausgabeziel von "click.progressbar" mit der Option "file" angeben können. Wenn Sie also ein Dateiobjekt angeben, das in "/ dev / null" geschrieben werden soll, wird nichts ausgegeben. Wenn Sie jedoch eine Funktion wie diese tausende Male aufrufen, sollten Sie das ordnungsgemäß geöffnete Dateiobjekt schließen.

So lösen Sie mit der Python-Technik, die auch in Umgebungen ohne / dev / null verwendet werden kann

import functools
from contextlib import contextmanager
import click


@contextmanager
def dummy_bar(items, **kwargs):
    yield items


def something(items, show_progress=False):
    f = click.progressbar if show_progress else dummy_bar
    fbar = functools.partial(f, items, show_pos=True, show_eta=True)

    with fbar() as bar:
        for item in bar:
            'abcd' * (1024 * 10)


items = list(xrange(10000))
something(items, show_progress=True)
print '--------'
something(items, show_progress=False)

Kommentar

Ich habe eine Funktion namens "dummy_bar" definiert, um eine Leiste zu erstellen, die nichts ausgibt. Da "click.progressbar" mit der "with" -Klausel aufgerufen wird, wird es der Variablen nach "as" unter Verwendung des Kontextmanagers zugewiesen, dh die durch das Argument angegebene Iterierbarkeit wird zurückgegeben, wie es mit "ield "ist. ..

Die zu verwendende Funktion wird mit der Option "show_progress" umgeschaltet, und die Argumente werden teilweise in "functools.partial" angewendet, so dass sie ohne Argumente einheitlich aufgerufen werden können. Also, wo es ursprünglich "mit click.progressbar (..." war, ist es einfach "mit fbar ()".

Jetzt wird die "Leiste" entsprechend dem Verhalten der Option durch "als" zugewiesen, und der Rest ist in Ordnung, wenn Sie sie normalerweise wie "click.progressbar" verwenden.

Recommended Posts

Option [Python] zum Deaktivieren der Ausgabe von click.progressbar
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Geben Sie den Inhalt von ~ .xlsx im Ordner mit Python in HTML aus
Geben Sie die Anzahl der CPU-Kerne in Python aus
Einstellung zur Ausgabe des Protokolls zur Ausführung von cron
So löschen Sie die von Python ausgegebenen Zeichen
Ausgabe in Form eines Python-Arrays
der Zen von Python
Grundlagen von Python: Ausgabe
Einfache Möglichkeit, die Quelle der Python-Module zu überprüfen
Die Wand beim Ändern des Django-Dienstes von Python 2.7 auf Python 3-Serie
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Zusammenfassung, wie die Farbe der Figur angegeben wird
14 Tests, um den überraschend verwirrenden Umfang von Python zu verstehen
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
[Python] So geben Sie Listenwerte der Reihe nach aus
Um das Äquivalent von Rubys ObjectSpace._id2ref in Python zu tun
Die Website von "The Hitchhiker's Guide to Python" wurde vollständig übersetzt.
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Geben Sie für jede Datei die angegebene Tabelle der Oracle-Datenbank in Python in Excel aus
Auf dem Weg zum Ruhestand von Python2
Schalten Sie die Brühwarnung aus
Filtern Sie die Ausgabe von tracemalloc
Über die Funktionen von Python
Die Kraft der Pandas: Python
Ich habe versucht, die Entropie des Bildes mit Python zu finden
[Python] Ändern Sie die Cache-Steuerung von Objekten, die in den Cloud-Speicher hochgeladen wurden
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Geben Sie "Farn programmgesteuert zeichnen" in den Zeichenprozess in Python ein
Erleichtern Sie die Anzeige von Python-Modulausnahmen
Ändern Sie das Standardausgabeziel in eine Datei in Python
Die Geschichte der Einführung von Jedi (automatisches Vervollständigungspaket von Python) in Emacs
[Python] Ich möchte die Option -h mit argparse verwenden
[Python] Ich habe versucht, die folgende Beziehung von Twitter zu visualisieren
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Anhängen an den Python-Prozess des SSH-Ziels und Debuggen
Ich möchte die Natur von Python und Pip kennenlernen
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
Die Geschichte, dass die Version von Python 3.7.7 nicht an Heroku angepasst wurde
Überlassen Sie die mühsame Verarbeitung Python
Die Geschichte von Python und die Geschichte von NaN
So bestimmen Sie die Existenz eines Selenelements in Python
So ändern Sie die Protokollstufe von Azure SDK für Python
Erster Python 3 ~ Der Beginn der Wiederholung ~
Wie Sie die interne Struktur eines Objekts in Python kennen
Einfache Möglichkeit, nach dem Dezimalpunkt in Python3 abzurunden
[Python] PCA-Scratch im Beispiel "Einführung in die multivariate Analysemethode"
So überprüfen Sie die Speichergröße einer Variablen in Python
[Einführung in Python] Ich habe die Namenskonventionen von C # und Python verglichen.
Ausgabe in eine CSV-Datei mit Python
Existenz aus Sicht von Python
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
pyenv-change die Python-Version von virtualenv
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python