Estoy intentando hacer algunos de los retos de code golf, pero todos ellos requieren que la entrada se tome de stdin
. ¿Cómo puedo conseguirlo en Python?
Puede utilizar el módulo fileinput
:
import fileinput
for line in fileinput.input():
pass
fileinput
recorrerá todas las líneas de la entrada especificada como nombres de archivos dados en los argumentos de la línea de comandos, o la entrada estándar si no se proporcionan argumentos.
Nota: línea
contendrá una nueva línea al final; para eliminarla utilice line.rstrip()
.
Hay varias formas de hacerlo.
sys.stdin
es un objeto similar a un fichero sobre el que puedes llamar a las funciones read
o readlines
si quieres leerlo todo o quieres leerlo todo y dividirlo por una nueva línea automáticamente. (Necesitas importar sys
para que esto funcione).
Si quieres preguntar al usuario por la entrada, puedes usar raw_input
en Python 2.X, y sólo input
en Python 3.
Si en realidad sólo quieres leer las opciones de la línea de comandos, puedes acceder a ellas a través de la lista sys.argv.
Probablemente encontrarás este artículo de Wikibook sobre E/S en Python como una referencia útil también.
Esto es de Learning Python:
import sys
data = sys.stdin.readlines()
print "Counted", len(data), "lines."
En Unix, puedes probarlo haciendo algo como
% cat countlines.py | python countlines.py
Counted 3 lines.
En Windows o DOS, harías:
C:\> type countlines.py | python countlines.py
Counted 3 lines.