¿Hay alguna forma corta de lograr lo que hace la interfaz de línea de comandos APT ( Advanced Package Tool ) en Python?
Quiero decir, cuando el administrador de paquetes pregunta una pregunta de sí / no seguida de [Yes/no]
, el guión acepta YES/Y/yes/y
o Enter(por defecto, Yes
como lo indica la letra mayúscula).
Lo único que encuentro en los documentos oficiales es input
y raw_input
...
Sé que no es tan difícil emular, pero es molesto reescribir: |
raw_input()
se llamainput()
.Respuestas:
Como mencionó, la forma más fácil es usar
raw_input()
(o simplementeinput()
para Python 3 ). No hay una forma integrada de hacer esto. De la receta 577058 :Ejemplo de uso:
fuente
elif choice in valid:
Y probablemente devolvería un booleano.raw_input()
se llamainput()
en Python3raw_input()
coninput()
para Python3.Lo haría de esta manera:
fuente
raw_input()
se llamainput()
en Python3Hay una función
strtobool
en la biblioteca estándar de Python: http://docs.python.org/2/distutils/apiref.html?highlight=distutils.util#distutils.util.strtoboolPuede usarlo para verificar la entrada del usuario y transformarla
True
oFalse
valor.fuente
f
probablemente significa Falso yFalse == 0
, por lo tanto, entiendo la lógica. Sin embargo, por qué la función devolvería un enint
lugar de unbool
es un misterio para mí.False
o0
(Cero). Cualquier cosa, de lo que se evalúa usando la función bool se convierte en verdadera y volverá:1
.if strtobool(string) is False: do_stuff()
.Una manera muy simple (pero no muy sofisticada) de hacer esto por una sola opción sería:
También podría escribir una función simple (ligeramente mejorada) alrededor de esto:
Nota: En Python 2, use en
raw_input
lugar deinput
.fuente
result = raw_input("message").lower() in ('y','yes')
Puede usar el método de clic
confirm
.Esto imprimirá:
Debería funcionar para
Python 2/3
Linux, Mac o Windows.Documentos: http://click.pocoo.org/5/prompts/#confirmation-prompts
fuente
como lo mencionó @Alexander Artemenko, aquí hay una solución simple usando strtobool
fuente
sys.stdout.write
lugar deprint
?strtobool()
no requiere (de mis pruebas) alower()
. Sin embargo, esto no es explícito en su documentación.Sé que esto se ha respondido de muchas maneras y esto puede no responder la pregunta específica de OP (con la lista de criterios), pero esto es lo que hice para el caso de uso más común y es mucho más simple que las otras respuestas:
fuente
raw_input
fue renombradoinput
en python 3 stackoverflow.com/questions/21122540/…También puedes usar el apuntador .
Descaradamente tomado del archivo Léame:
fuente
Modifiqué la respuesta de fmark a python 2/3 compatible más pythonic.
Vea el módulo de utilidad de ipython si está interesado en algo con más manejo de errores
fuente
en 2.7, ¿esto es demasiado no pitónico?
captura cualquier variación de Sí al menos.
fuente
Haciendo lo mismo con python 3.x, donde
raw_input()
no existe:fuente
Para Python 3, estoy usando esta función:
La función strtobool convierte una cadena en bool. Si la cadena no se puede analizar, generará un ValueError.
En Python 3, raw_input ha sido renombrado como input .
fuente
Puede probar algo como el siguiente código para poder trabajar con las opciones de la variable 'aceptado' que se muestra aquí:
Aquí está el código ...
fuente
Como novato en programación, encontré un montón de respuestas anteriores demasiado complejas, especialmente si el objetivo es tener una función simple a la que pueda pasar varias preguntas de sí / no, obligando al usuario a seleccionar sí o no. Después de recorrer esta página y varias otras, y tomar prestadas todas las buenas ideas, terminé con lo siguiente:
fuente
Qué tal esto:
fuente
Esto es lo que uso:
fuente
Así es como lo haría.
Salida
fuente
Aquí está mi opinión, simplemente quería abortar si el usuario no afirmaba la acción.
fuente
Un ejemplo de Python 3 limpio:
fuente