Como ler as entradas da stdin em Python

Hassan Saeed 15 fevereiro 2024
  1. Utilize fileinput.input() para ler a partir de stdin em Python
  2. Utilize sys.stdin para ler de stdin em Python
  3. Conclusão
Como ler as entradas da stdin em Python

Este tutorial discute métodos para ler as entradas do stdin em Python. Isto pode ser lido diretamente do console ou lido a partir do nome do arquivo especificado no console.

Utilize fileinput.input() para ler a partir de stdin em Python

Podemos utilizar o módulo fileinput para ler a partir de stdin em Python. O fileinput.input() lê todas as linhas nos nomes dos arquivos de entrada especificados nos argumentos da linha de comando. Se nenhum argumento for especificado, ele irá ler a entrada padrão fornecida.

O exemplo abaixo ilustra a leitura a partir do nome do arquivo de entrada especificado.

Utilizaremos o arquivo sample.txt abaixo.

Hello
Line1

Line2

Abaixo do script read.py.

import fileinput

for line in fileinput.input():
    print(line.rstrip())

Nós o executamos desta forma:

python read.py "sample.txt"

Resultado:

Hello
Line1

Line2

O exemplo abaixo ilustra a leitura a partir da entrada padrão.

import fileinput

for line in fileinput.input():
    print("Output:", line.rstrip())

A execução e a saída são mostradas abaixo.

python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z

Entrada de leitura Python a partir do stdin

Podemos salvar os dados a serem processados mais tarde também desta forma:

import fileinput

data = []
for line in fileinput.input():
    data.append(line.rstrip())

Note que estamos utilizando line.rstrip(). Isto é, para remover a nova linha de rastreamento.

Ao digitar y apaga todas as variáveis.

Utilize sys.stdin para ler de stdin em Python

Outra abordagem é utilizar sys.stdin para ler de stdin em Python. O exemplo abaixo ilustra a leitura de dados de stdin linha por linha:

import sys

for line in sys.stdin:
    print("Output:", line.rstrip())

A execução e a saída é mostrada abaixo.

python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z

Também podemos ler todos os dados de stdin de uma só vez em vez de linha por linha.

O exemplo abaixo ilustra isso:

import sys

data = sys.stdin.readlines()
data = [line.rstrip() for line in data]

Note que estamos utilizando line.rstrip(). Isto é, para remover a nova linha de fuga.

Conclusão

Discutimos 2 métodos, fileinput.input() e sys.stdin, para ler stdin input em Python. O fileinput.input() pode ler dados do nome do arquivo especificado no argumento de linha de comando ou da entrada padrão, enquanto o sys.stdin só pode ler dados da entrada padrão.

Artigo relacionado - Python Input