Gibt es einen kurzen Weg, um die Funktionen der APT- Befehlszeilenschnittstelle ( Advanced Package Tool ) in Python zu erreichen?
Ich meine, wenn der Paketmanager eine Ja / Nein-Frage gefolgt von gefolgt hat [Yes/no]
, akzeptiert das Skript YES/Y/yes/y
oder Enter(standardmäßig Yes
wie durch den Großbuchstaben angedeutet).
Das einzige, was ich in den offiziellen Dokumenten finde, ist input
und raw_input
...
Ich weiß, es ist nicht so schwer zu emulieren, aber es ist ärgerlich, Folgendes umzuschreiben: |
raw_input()
heißtinput()
.Antworten:
Wie Sie bereits erwähnt haben, ist die Verwendung
raw_input()
(oder einfachinput()
für Python 3 ) am einfachsten . Es gibt keine eingebaute Möglichkeit, dies zu tun. Aus Rezept 577058 :Anwendungsbeispiel:
quelle
elif choice in valid:
Und ich würde wahrscheinlich einen Booleschen Wert zurückgeben.raw_input()
wirdinput()
in Python3 aufgerufenraw_input()
mitinput()
für Python3.Ich würde es so machen:
quelle
raw_input()
wirdinput()
in Python3strtobool
In der Standardbibliothek von Python gibt es eine Funktion : http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util.strtoboolSie können es verwenden, um Benutzereingaben zu überprüfen und in
True
oderFalse
Wert umzuwandeln .quelle
f
steht wahrscheinlich für False, undFalse == 0
so verstehe ich die Logik. Warum die Funktion einint
anstelle von a zurückgeben würde,bool
ist mir allerdings ein Rätsel.False
oder0
(Null) ist. Alles andere, was mit der Bool-Funktion ausgewertet wird, wird wahr und gibt Folgendes zurück :1
.if strtobool(string) is False: do_stuff()
. H.Ein sehr einfacher (aber nicht sehr ausgefeilter) Weg, dies für eine einzige Wahl zu tun, wäre:
Sie können auch eine einfache (leicht verbesserte) Funktion schreiben:
Hinweis: Verwenden Sie in Python 2
raw_input
anstelle voninput
.quelle
result = raw_input("message").lower() in ('y','yes')
Sie können mit Klick ‚s -
confirm
Methode.Dies wird gedruckt:
Sollte
Python 2/3
unter Linux, Mac oder Windows funktionieren .Dokumente: http://click.pocoo.org/5/prompts/#confirmation-prompts
quelle
Wie von @Alexander Artemenko erwähnt, ist hier eine einfache Lösung mit strtobool
quelle
sys.stdout.write
stattprint
?strtobool()
dies (aus meinen Tests) nicht erforderlich istlower()
. Dies ist jedoch in der Dokumentation nicht explizit.Ich weiß, dass dies auf verschiedene Arten beantwortet wurde und möglicherweise nicht die spezifische Frage von OP (mit der Liste der Kriterien) beantwortet, aber dies habe ich für den häufigsten Anwendungsfall getan und es ist weitaus einfacher als die anderen Antworten:
quelle
raw_input
wurdeinput
in Python 3 umbenannt stackoverflow.com/questions/21122540/…Sie können auch eine Eingabeaufforderung verwenden .
Schamlos aus der README entnommen:
quelle
Ich habe die Antwort von fmark geändert, um mit Python 2/3 kompatibler mehr Python zu machen.
Weitere Informationen finden Sie im Dienstprogrammmodul von ipython, wenn Sie an etwas mit mehr Fehlerbehandlung interessiert sind
quelle
Ist dies in 2.7 zu nicht pythonisch?
es erfasst zumindest jede Variation von Ja.
quelle
Machen Sie dasselbe mit Python 3.x, wo
raw_input()
es nicht existiert:quelle
Für Python 3 verwende ich diese Funktion:
Die Funktion strtobool konvertiert einen String in einen Bool. Wenn die Zeichenfolge nicht analysiert werden kann, wird ein ValueError ausgelöst.
In Python 3 wurde raw_input in input umbenannt .
quelle
Sie können so etwas wie den folgenden Code ausprobieren, um mit Auswahlmöglichkeiten aus der hier akzeptierten Variablen "Akzeptiert" arbeiten zu können:
Hier ist der Code ..
quelle
Als Programmier-Neuling fand ich eine Reihe der oben genannten Antworten zu komplex, insbesondere wenn das Ziel darin besteht, eine einfache Funktion zu haben, an die Sie verschiedene Ja / Nein-Fragen übergeben können, wodurch der Benutzer gezwungen wird, Ja oder Nein auszuwählen. Nachdem ich diese und mehrere andere Seiten durchsucht und all die verschiedenen guten Ideen ausgeliehen hatte, kam ich zu folgendem Ergebnis:
quelle
Wie wäre es damit:
quelle
Das benutze ich:
quelle
So würde ich es machen.
Ausgabe
quelle
Hier ist meine Meinung dazu: Ich wollte einfach abbrechen, wenn der Benutzer die Aktion nicht bestätigt hat.
quelle
Ein bereinigtes Python 3-Beispiel:
quelle