Cómo leer la entrada de stdin en Python
-
Use
fileinput.input()para leer destdinen Python -
Usa
sys.stdinpara leer destdinen 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.