¿Cómo leo desde stdin?
¿Cómo leo desde stdin
? Algunos desafíos de golf con códigostdin
requieren su uso como entrada.
Utilice el fileinput
módulo:
import fileinput
for line in fileinput.input():
pass
fileinput
recorrerá todas las líneas de la entrada especificada como nombres de archivo proporcionados en los argumentos de la línea de comandos, o la entrada estándar si no se proporcionan argumentos.
Nota: line
contendrá una nueva línea al final; para eliminarlo utilice line.rstrip()
.
Hay algunas maneras de hacerlo.
sys.stdin
es un objeto similar a un archivo en el que puedes llamar funcionesread
oreadlines
si quieres leer todo o quieres leer todo y dividirlo automáticamente por nueva línea. (Es necesarioimport sys
para que esto funcione).Si desea solicitar información al usuario, puede usarlo
raw_input
en Python 2.X y soloinput
en Python 3.Si realmente sólo desea leer las opciones de la línea de comandos, puede acceder a ellas a través de la lista sys.argv .
Probablemente este artículo de Wikibook sobre E/S en Python también le resulte una referencia útil.
import sys
for line in sys.stdin:
print(line)
Tenga en cuenta que esto incluirá un carácter de nueva línea al final. Para eliminar la nueva línea al final, use line.rstrip()
como dijo @brittohalloran.
Python también tiene funciones integradas input()
y raw_input()
. Consulte la documentación de Python en Funciones integradas .
Por ejemplo,
name = raw_input("Enter your name: ") # Python 2.x
o
name = input("Enter your name: ") # Python 3
Aquí es de Aprendiendo 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.