Como ler as entradas da stdin em Python
-
Utilize
fileinput.input()
para ler a partir destdin
em Python -
Utilize
sys.stdin
para ler destdin
em Python - Conclusão
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
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.