Leggi input da stdin in Python

Hassan Saeed 15 febbraio 2024
  1. Usa fileinput.input() per leggere da stdin in Python
  2. Usa sys.stdin per leggere da stdin in Python
  3. Conclusione
Leggi input da stdin in Python

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

Python legge l’input da stdin

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.

Articolo correlato - Python Input