¿Cómo puedo tener un script de Python que pueda aceptar la entrada del usuario (suponiendo que esto sea posible) y cómo lo hago leer en argumentos si se ejecuta desde la línea de comando?Python: entrada de usuario y argumentos de línea de comando
Respuesta
Para leer la entrada del usuario puede intentar the cmd
module para crear fácilmente un intérprete de línea de mini-comando (con textos de ayuda y la terminación automática) y raw_input
(input
para Python + 3) para la lectura de una línea de texto por parte del usuario.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Las entradas de la línea de comandos están en sys.argv
. Prueba esto en el script:
import sys
print (sys.argv)
Hay dos módulos para analizar las opciones de línea de comandos: (en desuso desde Python 2.7, utilizar optparse
argparse
lugar) y getopt
. Si solo desea ingresar archivos en su secuencia de comandos, observe el poder de fileinput
.
El Python library reference es tu amigo.
'raw_input' ha cambiado de nombre a' entrada' en Python 3.x - [documentación aquí] (http://docs.python.org/py3k/whatsnew/3.0.html#builtins) – steampowered
Mi favorito fuente para esto: http://www.tutorialspoint.com/python/python_command_line_arguments.htm y esto se ve bien también: http://www.cyberciti.biz/faq/python-command-line-arguments-argv-example/ –
sys.argv debe suministrarse con el número de argumento, si supone que pasa un parámetro como un valor, por ejemplo. python nombre_de_archivo.py 2017-02-10 y desea utilizar la fecha, debe ser sys.argv [1] de lo contrario será una lista como [nombre_de_archivo.py, 2017-02-10] –
var = raw_input("Please enter something: ")
print "you entered", var
O para Python 3:
var = input("Please enter something: ")
print("You entered " + str(var))
Debe tenerse en cuenta que no tiene que importar 'raw_input', es una función incorporada. –
No tiene que usar str() en la concatenación de impresión ya que todos los datos ingresados serán de tipo str (ing) por defecto (números pares). – Goujon
La mejor manera de procesar los argumentos de línea de comandos es la argparse
module.
Uso raw_input()
para obtener la entrada del usuario. Si importa el readline module
, sus usuarios tendrán edición de línea e historial.
readline solo disponible en Unix de fábrica. –
argparse es la nueva optparse –
Use 'raw_input' para la entrada desde una consola/terminal.
si solo quiere un argumento de línea de comando como un nombre de archivo o algo por el estilo.
$ python my_prog.py file_name.txt
entonces puede utilizar sys.argv ...
import sys
print sys.argv
sys.argv es una lista donde 0 es el nombre del programa, por lo que en el ejemplo anterior sys.argv [1] sería "file_name.txt"
Si desea tener opciones de línea de comando completas, use el módulo optparse.
Pev
cuidado de no utilizar la función de input
, a menos que sepa lo que está haciendo. A diferencia de raw_input
, input
aceptará ninguna expresión de Python, así que es un poco como eval
A partir de Python 3.2 2.7, ahora hay argparse para el procesamiento de argumentos de línea de comandos.
argparse también ha sido backported y está disponible en PyPi http://pypi.python.org/pypi/argparse/1.2.1 –
raw_input
ya no está disponible en Python 3.x. Pero raw_input
pasó a llamarse input
, por lo que existe la misma funcionalidad.
input_var = input("Enter something: ")
print ("you entered " + input_var)
En Python 2.7, input() no convierte valores en cadenas. Por lo tanto, si intenta hacer esto: input_variable1 = input ("Introduzca la primera palabra o frase:"), obtendrá un error: Traceback (última llamada más reciente): return eval (raw_input (prompt)) Archivo "
input_var = input ("Presione 'E' y 'Enter' para Salir:") NameError: el nombre 'e' no está definido I Estoy usando Python 2.5. ¿Cómo puedo superar este error? –
puede evitar el aviso Rastreo usando la siguiente importación que viene con Python 2.7: 'importación fileinput resultado = [] para la línea en fileinput.input(): \t result.append (línea)' –
Si está ejecutando Python < 2.7, es necesario optparse, que como el documento explica creará una interfaz para los argumentos de línea de comandos que se llaman cuando se ejecuta la aplicación.
Sin embargo, en Python ≥2.7, optparse ha quedado en desuso y fue reemplazado por argparse como se muestra arriba. Un ejemplo rápido de los documentos ...
The following code is a Python program that takes a list of integers and produces either the sum or the max:
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)
Este sencillo programa que ayuda en la comprensión de cómo alimentar a la entrada del usuario desde la línea de comandos y para mostrar ayuda en el paso del argumento válido.
import argparse
import sys
try:
parser = argparse.ArgumentParser()
parser.add_argument("square", help="display a square of a given number",
type=int)
args = parser.parse_args()
#print the square of user input from cmd line.
print args.square**2
#print all the sys argument passed from cmd line including the program name.
print sys.argv
#print the second argument passed from cmd line; Note it starts from ZERO
print sys.argv[1]
except:
e = sys.exc_info()[0]
print e
1) Para hallar la raíz cuadrada de 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Pasando argumento no válido distinto al número de
C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>
Si se trata de una versión 3.x a continuación, utilizar simplemente:
variantname = input()
Por ejemplo, yo desea ingresar 8:
x = input()
8
x será igual a 8 pero va a ser una cadena, excepto si lo define de otra manera.
lo que puede utilizar el comando de conversión, como:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
En Python 2:
data = raw_input('Enter something: ')
print data
En Python 3:
data = input('Enter something: ')
print(data)
- 1. Argumentos de línea de comando en python.
- 2. Línea de comando de Python - Entrada de línea múltiple
- 3. argumentos de línea de comando gem/git-style en Python
- 4. Obteniendo entrada de contraseña de línea de comando en Python
- 5. Argumentos de línea de comando de autocompletado
- 6. Línea de comando de Python 'secuencia de entrada de archivo'
- 7. Usando argumentos de línea de comando en Python: Comprender sys.argv
- 8. argumentos de línea de comando con leiningen
- 9. argumentos de línea de comando pase powershell
- 10. Entrada desde la línea de comando
- 11. ¿Cómo probar los argumentos de la línea de comando?
- 12. ¿Hay un módulo para obtener la entrada del usuario desde la línea de comando en node.js?
- 13. Python, análisis de argumento de línea de comando
- 14. Haskell: Análisis de los argumentos de la línea de comando
- 15. Uso de argumentos de línea de comando adicionales con gunicorn
- 16. Argumentos del comando personalizado del servicio Python
- 17. Python, prueba de unidad: Pase los argumentos de línea de comando a setUp de unittest.TestCase
- 18. Obtención de argumentos de línea de comando en Common Lisp
- 19. Ejecución de eclipse con argumentos de línea de comando
- 20. Python & SCons & Matlab: entrada de comando incorrecta
- 21. Desinfección de entrada de usuario utilizando Python
- 22. tuberías, argumentos de entrada y la línea de comandos estándar de Bash
- 23. lua interactivos: los argumentos de línea de comando
- 24. Usando argumentos de línea de comando en VBscript
- 25. Ejecutar archivo jar con argumentos de línea de comando
- 26. Pasando argumentos de línea de comando en Visual Studio 2010?
- 27. cómo tomar enteros como argumentos de línea de comando?
- 28. Analizando argumentos de línea de comando desde STRING en Clojure
- 29. argumentos de línea de comando en bash a Rscript
- 30. Pasando argumentos de línea de comando al documento LaTeX
La respuesta dependerá de la versión de Pitón. Python 3.x hace esto un poco diferente que Python 2.7 – steampowered
Y Python 2.7 también hace esto de una manera un poco diferente que las versiones anteriores a 2.7, p. Ej. 'argparse' en lugar de' optparse'. – HelloGoodbye