HOWTO · Python

Como ler as entradas da stdin em Python

O artigo introduz métodos para ler a entrada da stdin em Python

Nesta página

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.