script - Entrada de línea de comando en Python
interprete de python (4)
¿Es posible ejecutar primero el programa y luego esperar la entrada del usuario en la línea de comando? p.ej
Run...
Process...
Input from the user(in command line form)...
Process...
Solo tomando entrada
the_input = raw_input("Enter input: ")
Y eso es.
Además, si desea hacer una lista de entradas, puede hacer algo como:
a = []
for x in xrange(1,10):
a.append(raw_input("Enter Data: "))
En ese caso, se le solicitarán datos 10 veces para almacenar 9 elementos en una lista.
Salida:
Enter data: 2
Enter data: 3
Enter data: 4
Enter data: 5
Enter data: 7
Enter data: 3
Enter data: 8
Enter data: 22
Enter data: 5
>>> a
[''2'', ''3'', ''4'', ''5'', ''7'', ''3'', ''8'', ''22'', ''5'']
Puede buscar esa lista de la manera fundamental con algo así como (después de hacer esa lista):
if ''2'' in a:
print "Found"
else: imprime "No encontrado".
Puede reemplazar ''2'' con "raw_input ()" de esta manera:
if raw_input("Search for: ") in a:
print "Found"
else:
print "Not found"
Tomar datos brutos del archivo de entrada a través de la interfaz de línea de comando
Si desea tomar la información de un archivo que ingresa a través de la línea de comando (que normalmente es lo que necesita al hacer problemas de código para competiciones, como Google Code Jam o el ACM / IBM ICPC):
example.py
while(True):
line = raw_input()
print "input data: %s" % line
En la interfaz de línea de comando:
example.py < input.txt
Espero que ayude.
Comience su script con la siguiente línea. La secuencia de comandos se ejecutará primero y luego obtendrá el símbolo del sistema de python. En este punto, todas las variables y funciones estarán disponibles para uso interactivo e invocaciones.
#! / usr / bin / env python -i
No está del todo claro qué significaba el OP (incluso después de algunos vaivenes en los comentarios), pero aquí hay dos respuestas a las posibles interpretaciones de la pregunta:
Para la entrada de usuario interactiva (o comandos canalizados o entrada redirigida)
Utilice raw_input
en Python 2.x e input
en Python 3. (Estos están integrados, por lo que no necesita importar nada para usarlos, solo tiene que usar el correcto para su versión de python).
Por ejemplo:
user_input = raw_input("Some input please: ")
Más detalles se pueden encontrar here .
Entonces, por ejemplo, es posible que tenga un script que se parece a esto
# First, do some work, to show -- as requested -- that
# the user input doesn''t need to come first.
from __future__ import print_function
var1 = ''tok''
var2 = ''tik''+var1
print(var1, var2)
# Now ask for input
user_input = raw_input("Some input please: ") # or `input("Some...` in python 3
# Now do something with the above
print(user_input)
Si guardó esto en foo.py
, podría simplemente llamar al script desde la línea de comando, imprimiría tok tiktok
, y luego le pediría entrada. Podrías ingresar bar baz
(seguido de la tecla enter) e imprimiría bar baz
. Esto es lo que se vería así:
$ python foo.py
tok tiktok
Some input please: bar baz
bar baz
Aquí, $
representa el indicador de la línea de comando (por lo que en realidad no escribe eso), y presiono Enter
después de escribir bar baz
cuando solicitó entrada.
Para argumentos de línea de comandos
Supongamos que tiene un script llamado foo.py
y quiere llamarlo con argumentos bar
y baz
desde la línea de comando como
$ foo.py bar baz
(De nuevo, $
representa el indicador de la línea de comandos.) Luego, puede hacer eso con lo siguiente en su secuencia de comandos:
import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]
Aquí, la variable arg1
contendrá la cadena ''bar''
, y arg2
contendrá ''baz''
. El objeto sys.argv
es solo una lista que contiene todo desde la línea de comando. Tenga en cuenta que sys.argv[0]
es el nombre del script. Y si, por ejemplo, solo quiere una lista única de todos los argumentos, usaría sys.argv[1:]
.
Si está usando Python 3, raw_input
ha cambiado para input
Ejemplo de Python 3:
line = input(''Enter a sentence:'')