Cómo leer la entrada de stdin en Python
-
Use
fileinput.input()
para leer destdin
en Python -
Usa
sys.stdin
para leer destdin
en Python - Conclusión
Este tutorial discute los métodos para leer la entrada de stdin
en Python. Esto puede ser leyendo directamente desde la consola o leyendo desde el nombre de archivo especificado en la consola.
Use fileinput.input()
para leer de stdin
en Python
Podemos usar el módulo fileinput
para leer desde stdin
en Python. fileinput.input()
lee a través de todas las líneas de los nombres de los archivos de entrada especificados en los argumentos de la línea de comandos. Si no se especifica ningún argumento, leerá la entrada estándar proporcionada.
El siguiente ejemplo ilustra la lectura del nombre del archivo de entrada especificado.
Usaremos el sample.txt
a continuación.
Hello
Line1
Line2
Debajo del script read.py
.
import fileinput
for line in fileinput.input():
print(line.rstrip())
Lo ejecutamos así:
python read.py "sample.txt"
Resultado:
Hello
Line1
Line2
El siguiente ejemplo ilustra la lectura desde la entrada estándar.
import fileinput
for line in fileinput.input():
print("Output:", line.rstrip())
La ejecución y la salida se muestran a continuación.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
Podemos guardar los datos para ser procesados más tarde, así:
import fileinput
data = []
for line in fileinput.input():
data.append(line.rstrip())
Note que estamos usando line.rstrip()
. Eso es para eliminar la nueva línea que queda.
Escribiendo y
se borran todas las variables.
Usa sys.stdin
para leer de stdin
en Python
Otro enfoque es usar sys.stdin
para leer de stdin
en Python. El siguiente ejemplo ilustra la lectura de datos de stdin
línea por línea:
import sys
for line in sys.stdin:
print("Output:", line.rstrip())
La ejecución y la salida se muestra a continuación.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
También podemos leer todos los datos de stdin
de una sola vez en lugar de línea por línea.
El siguiente ejemplo ilustra esto:
import sys
data = sys.stdin.readlines()
data = [line.rstrip() for line in data]
Note que estamos usando line.rstrip()
. Esto es para eliminar la nueva línea que queda.
Conclusión
Discutimos 2 métodos, fileinput.input()
y sys.stdin
, para leer stdin
input en Python. fileinput.input()
puede leer datos del nombre de archivo especificado en el argumento de la línea de comandos o de la entrada estándar, mientras que sys.stdin
sólo puede leer datos de la entrada estándar.