Cómo leer la entrada de stdin en Python

Hassan Saeed 30 enero 2023
  1. Use fileinput.input() para leer de stdin en Python
  2. Usa sys.stdin para leer de stdin en Python
  3. Conclusión
Cómo leer la entrada de stdin en Python

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

Python lee la entrada desde stdin

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.

Artículo relacionado - Python Input