Existe-t-il un moyen rapide de réaliser ce que fait l' interface de ligne de commande APT ( Advanced Package Tool ) en Python?
Je veux dire, lorsque le gestionnaire de paquets pose une question oui / non suivie de [Yes/no]
, le script accepte YES/Y/yes/y
ouEnter (par défaut, Yes
comme indiqué par la lettre majuscule).
La seule chose que je trouve dans la documentation officielle est input
et raw_input
...
Je sais que ce n'est pas si difficile à imiter, mais c'est ennuyeux à réécrire: |
raw_input()
s'appelleinput()
.Réponses:
Comme vous l'avez mentionné, le moyen le plus simple est d'utiliser
raw_input()
(ou simplementinput()
pour Python 3 ). Il n'y a pas de moyen intégré de le faire. D'après la recette 577058 :Exemple d'utilisation:
la source
elif choice in valid:
Et je retournerais probablement un booléen.raw_input()
input()
raw_input()
parinput()
pour Python3.Je le ferais de cette façon:
la source
raw_input()
est appeléinput()
en Python3Il existe une fonction
strtobool
dans la bibliothèque standard de Python: http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util.strtoboolVous pouvez l'utiliser pour vérifier l'entrée de l'utilisateur et la transformer en
True
ou enFalse
valeur.la source
f
signifie probablement Faux, etFalse == 0
, donc je comprends la logique. Pourquoi la fonction renverrait unint
au lieu d'unbool
est un mystère pour moi.False
ou0
(Zéro). Tout ce qui , d' autre qui est évaluée en utilisant la fonction bool devient vrai et retourne:1
.if strtobool(string) is False: do_stuff()
.Une façon très simple (mais pas très sophistiquée) de faire cela pour un seul choix serait:
Vous pouvez également écrire une fonction simple (légèrement améliorée) autour de ceci:
Remarque: sur Python 2, utilisez à la
raw_input
place deinput
.la source
result = raw_input("message").lower() in ('y','yes')
Vous pouvez utiliser la méthode de clic
confirm
.Cela imprimera:
Devrait fonctionner pour
Python 2/3
Linux, Mac ou Windows.Documents: http://click.pocoo.org/5/prompts/#confirmation-prompts
la source
comme mentionné par @Alexander Artemenko, voici une solution simple utilisant strtobool
la source
sys.stdout.write
au lieu deprint
?strtobool()
cela ne nécessite pas (d'après mes tests) unlower()
. Ceci n'est cependant pas explicite dans sa documentation.Je sais que cela a été répondu de nombreuses façons et que cela ne répond peut-être pas à la question spécifique d'OP (avec la liste des critères), mais c'est ce que j'ai fait pour le cas d'utilisation le plus courant et c'est beaucoup plus simple que les autres réponses:
la source
raw_input
été renomméinput
en python 3 stackoverflow.com/questions/21122540/…Vous pouvez également utiliser prompteur .
Sans vergogne extrait du README:
la source
J'ai modifié la réponse de fmark à par python 2/3 compatible plus pythonique.
Voir le module utilitaire d'ipython si vous êtes intéressé par quelque chose avec plus de gestion des erreurs
la source
sur 2.7, est-ce trop non pythonique?
il capture au moins toute variation de Oui.
la source
Faire de même avec python 3.x, où
raw_input()
n'existe pas:la source
Pour Python 3, j'utilise cette fonction:
le fonction strtobool convertit une chaîne en booléen. Si la chaîne ne peut pas être analysée, elle lèvera une ValueError.
Dans Python 3, raw_input a été renommé en entrée .
la source
Vous pouvez essayer quelque chose comme le code ci-dessous pour pouvoir travailler avec les choix de la variable `` acceptée '' affichée ici:
Voici le code.
la source
En tant que noob de programmation, j'ai trouvé un tas de réponses ci-dessus trop complexes, surtout si le but est d'avoir une fonction simple à laquelle vous pouvez passer diverses questions oui / non, forçant l'utilisateur à sélectionner oui ou non. Après avoir parcouru cette page et plusieurs autres, et emprunté toutes les différentes bonnes idées, je me suis retrouvé avec ce qui suit:
la source
Que dis-tu de ça:
la source
Voici ce que j'utilise:
la source
Voilà comment je procéderais.
Production
la source
Voici mon avis, je voulais simplement abandonner si l'utilisateur n'affirmait pas l'action.
la source
Un exemple Python 3 nettoyé:
la source