[PYTHON] [Fabric] Ich war süchtig danach, Boolesche Werte als Argument zu verwenden. Notieren Sie sich also die Gegenmaßnahmen.

Hintergrund

Zum Beispiel

from fabric.api import run

def test(flag=False):
    if flag is True:
        run("echo hoge")
    else:
        run("echo fuga")

Oder schreiben

$ fab -H host test:flag=True

Wenn ich so etwas versuche fuga wird ausgegeben.

Das in Fabric übergebene Argument lautet str.

>>> "True" is True
False

Es muss auf irgendeine Weise konvertiert werden.

Gegenmaßnahme

Teil 1 Besetzung

Einfach besetzen.

from fabric.api import run

def test(flag=True):
    if bool(flag) is True:
        run("echo hoge")
    else:
        run("echo fuga")
$ fab -H host test:flag=False
fuga

Jedoch,

$ fab -H host test:flag=false

Ich werde sterben. "True" / "False" kann in einen Booleschen Wert umgewandelt werden, aber "true" / "false" kann nicht umgewandelt werden

Teil 2 strtobool

Es gibt so einen Typen in der Standardbibliothek.

from distutils.util import strtobool
from fabric.api import run

def __strtobool(arg):
    return bool(strtobool(arg))

def test(flag="True"):
    flag = __strtobool(flag)
    if flag is True:
        run("echo hoge")
    else:
        run("echo fuga")

Schreiben Sie so. Mit diesem können Sie "y", "t", on "und andere Zeichenfolgen anstelle von" True "verwenden.

Wenn Sie jedoch "def test (flag = True):" oder das Standardargument als booleschen Typ schreiben, wird ein Fehler ausgegeben.

Bereiten Sie einen Kompromissplan für diese Zeit vor. Übrigens mache ich auch eine Ausnahme, falls ich in einer Zeichenfolge stecke, die nicht in strtobool () konvertiert werden kann.

def __strtobool(arg):
    try:
        if type(arg) == type(True):
            return arg
        else:
            return bool(strtobool(arg))
    except ValueError:
        ...

Es wird immer schwieriger.

Recommended Posts

[Fabric] Ich war süchtig danach, Boolesche Werte als Argument zu verwenden. Notieren Sie sich also die Gegenmaßnahmen.
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Eine Geschichte, nach der ich süchtig war, als ich in Go nil als Funktionsargument angab
Beachten Sie, dass ich süchtig danach war, mit Pythons mysql.connector über eine Webanwendung auf die Datenbank zuzugreifen
Ich bin auf MoviePy gestoßen, machen Sie sich also eine Notiz
Ich wollte das Suchmodul von Ansible2 verwenden, aber es hat einige Zeit gedauert, machen Sie sich also eine Notiz
Nehmen Sie eine Instanz einer Python-Ausnahmeklasse nicht direkt als Argument für die Ausnahmeklasse!
Ich habe versucht, die Genauigkeit von Modellen für maschinelles Lernen mit Kaggle als Thema zu vergleichen.
Was den in Honchos Procfile geschriebenen Prozesstyp betrifft, war ich über eine Stunde lang süchtig danach, weil ich ihn nicht verwenden konnte - also werde ich ihn als Show schreiben.
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
Als ich versuchte, mithilfe von Anforderungen in Python zu kratzen, war ich süchtig nach SSLError, also einem Workaround-Memo
Eine Geschichte über das Schreiben von AWS Lambda und ein wenig Abhängigkeit von den Standardwerten von Python-Argumenten
Ich habe versucht, den Unterschied zwischen A + = B und A = A + B in Python herauszufinden
Beachten Sie die Lösung, da Django nicht mit pip installiert werden konnte
Ich habe einen Appdo-Befehl erstellt, um Befehle im Kontext der App auszuführen
Speichern Sie das numpy-Array mithilfe des Wave-Moduls in einer WAV-Datei
AtCoder AGC 041 C - Ich war süchtig nach der vollständigen Suche nach Domino-Qualität
Plötzlich musste ich mit Python und Pyramid an einem Projekt arbeiten, also eine Notiz darüber, wie ich lerne
Arbeitsmemorandum (Pymongo) Teil 3. Ich möchte es nicht noch einmal überprüfen, also notieren Sie es sich (Aggregat)
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Beachten Sie, dass ich süchtig nach dem npm-Skript war, das in der Überprüfungsumgebung nicht übergeben wurde
Ich wollte viele Bilder sammeln, also habe ich versucht, "Google Image Download" zu verwenden.
Hinweis: Bedeutung der Angabe von nur * (Sternchen) als Argument in der Funktionsdefinition von Python
Ich möchte einen Screenshot der Site in Docker mit einer beliebigen Schriftart erstellen
Notieren Sie sich die Liste der grundlegenden Verwendungszwecke von Pandas
Eine Geschichte, von der ich bei np.where süchtig war
Wovon ich süchtig war, als ich Python Tornado benutzte
Python Hinweis: Das Rätsel, einer Variablen eine Variable zuzuweisen
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ich habe eine Funktion zum Trimmen des Bildes von Python openCV erstellt. Verwenden Sie sie daher bitte.
Ich war für die Pflege des Fabric-Skripts verantwortlich, weiß es aber nicht.> <Für diejenigen, die
Ich habe versucht, die Erstellung einer praktischen Umgebung mithilfe der SoftLayer-API der IBM Cloud zu automatisieren
So erstellen Sie einen interaktiven LINE BOT 004 (beantworten Sie den Stichtag eines börsennotierten Unternehmens)
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe mit PyQt einen einfachen Texteditor erstellt
[Fix] Ich war süchtig nach dem alphanumerischen Urteil über Python-Strings
Als mir ein Diagramm wie die Hauptkomponentenanalyse gezeigt wurde, "unterscheiden sich die Verteilungen dieser beiden Daten nicht signifikant"?
Ich war ein wenig süchtig nach der Installation von Python3.3 + mod_wsgi3.4 auf Sakura VPS (CentOS), also ein Hinweis zur Überprüfung
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
[Twitter] Ich möchte die heruntergeladenen vergangenen Tweets (meines Kontos) in eine schöne CSV verwandeln
Ich möchte die Frage nach der Methode "__init__" und dem Argument "self" der Python-Klasse klären.
Eine Geschichte, die ich süchtig danach war, Lambda von AWS Lambda anzurufen.
Verstehen Sie die Funktion der Faltung am Beispiel der Bildverarbeitung
Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
Format, wenn eine lange Zeichenfolge als Python-Argument übergeben wird
Vorsichtsmaßnahmen bei Verwendung einer Liste oder eines Wörterbuchs als Standardargument
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt