Leggi input da stdin in Python
-
Usa
fileinput.input()per leggere dastdinin Python -
Usa
sys.stdinper leggere dastdinin Python - Conclusione
Questo tutorial discute i metodi per leggere l’input da stdin in Python. Può essere la lettura direttamente dalla console o la lettura dal nome del file specificato nella console.
Usa fileinput.input() per leggere da stdin in Python
Possiamo usare il modulo fileinput per leggere da stdin in Python. fileinput.input() legge tutte le righe nei nomi dei file di input specificati negli argomenti della riga di comando. Se non viene specificato alcun argomento, leggerà lo standard input fornito.
L’esempio seguente illustra la lettura dal nome del file di input specificato.
Useremo il sample.txt di seguito.
Hello
Line1
Line2
Di seguito lo script read.py.
import fileinput
for line in fileinput.input():
print(line.rstrip())
Lo eseguiamo in questo modo:
python read.py "sample.txt"
Produzione:
Hello
Line1
Line2
L’esempio seguente illustra la lettura dallo standard input.
import fileinput
for line in fileinput.input():
print("Output:", line.rstrip())
L’esecuzione e l’output sono mostrati di seguito.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z

Possiamo salvare i dati per essere elaborati in seguito anche in questo modo:
import fileinput
data = []
for line in fileinput.input():
data.append(line.rstrip())
Nota che stiamo usando line.rstrip(). Ovvero rimuovere la nuova riga finale.
Digitando y si cancellano tutte le variabili.
Usa sys.stdin per leggere da stdin in Python
Un altro approccio è usare sys.stdin per leggere da stdin in Python. L’esempio seguente illustra la lettura dei dati da stdin riga per riga:
import sys
for line in sys.stdin:
print("Output:", line.rstrip())
L’esecuzione e l’output sono mostrati di seguito.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
Possiamo anche leggere tutti i dati da stdin in una volta invece che riga per riga.
L’esempio seguente lo illustra:
import sys
data = sys.stdin.readlines()
data = [line.rstrip() for line in data]
Nota che stiamo usando line.rstrip(). Vale a rimuovere la nuova riga finale.
Conclusione
Abbiamo discusso 2 metodi, fileinput.input() e sys.stdin, per leggere l’input stdin in Python. fileinput.input() può leggere i dati dal nome file specificato nell’argomento della riga di comando o dallo standard input, mentre sys.stdin può leggere solo i dati dallo standard input.