¿Cómo tengo un script de Python que a) puede aceptar la entrada del usuario y cómo lo hago b) leer en argumentos si se ejecuta desde la línea de comandos?
argparselugar de optparse.
¿Cómo tengo un script de Python que a) puede aceptar la entrada del usuario y cómo lo hago b) leer en argumentos si se ejecuta desde la línea de comandos?
argparselugar de optparse.
Respuestas:
Para leer la entrada del usuario, puede probar el cmdmódulo para crear fácilmente un mini intérprete de línea de comando (con textos de ayuda y autocompletado) y raw_input( inputpara Python 3+) para leer una línea de texto del usuario.
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Las entradas de la línea de comando están adentro sys.argv. Prueba esto en tu script:
import sys
print (sys.argv)
Hay dos módulos para analizar las opciones de la línea de comandos: (en desuso desde Python 2.7, use optparseargparseen su lugar) y getopt. Si solo desea ingresar archivos a su script, contemple el poder de fileinput.
La referencia de la biblioteca de Python es tu amigo.
var = raw_input("Please enter something: ")
print "you entered", var
O para Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input, es una función integrada.
raw_inputya no está disponible en Python 3.x. Pero raw_inputfue renombrado input, por lo que existe la misma funcionalidad.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
La mejor manera de procesar argumentos de línea de comandos es el argparsemódulo.
Use raw_input()para obtener la entrada del usuario. Si importa, readline modulesus usuarios tendrán edición de línea e historial.
Este sencillo programa le ayuda a comprender cómo alimentar la entrada del usuario desde la línea de comandos y mostrar ayuda al pasar argumentos no válidos.
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 encontrar la raíz cuadrada de 5
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Pasar argumento inválido que no sea número
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'>
Use 'raw_input' para la entrada desde una consola / terminal.
si solo desea un argumento de línea de comando como un nombre de archivo o algo por ejemplo
$ python my_prog.py file_name.txt
entonces puedes usar 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 completas en la línea de comandos, use el módulo optparse.
Pev
Si está ejecutando Python <2.7, necesita optparse , que como explica el documento creará una interfaz para los argumentos de la línea de comandos que se invocan cuando se ejecuta su aplicación.
Sin embargo, en Python ≥2.7, optparse ha quedado en desuso y se reemplazó con el argumento arg como se muestra arriba. Un ejemplo rápido de los documentos ...
El siguiente código es un programa de Python que toma una lista de enteros y produce la suma o el máximo:
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)
A partir de Python 3.22.7, ahora hay argumentos para procesar los argumentos de la línea de comandos.
Si es una versión 3.x, simplemente use:
variantname = input()
Por ejemplo, desea ingresar 8:
x = input()
8
x será igual a 8 pero será una cadena excepto si la define de otra manera.
Para que pueda usar el comando de conversión, como:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))