Comment lire les entrées de stdin en Python
-
Utilisez
fileinput.input()pour lire à partir destdinen Python -
Utilisez
sys.stdinpour lire à partir destdinen Python - Conclusion
Ce tutoriel traite des méthodes pour lire les entrées de stdin en Python. Cela peut être soit la lecture directe depuis la console, soit la lecture depuis le nom de fichier spécifié dans la console.
Utilisez fileinput.input() pour lire à partir de stdin en Python
Nous pouvons utiliser le module fileinput pour lire à partir de stdin en Python. Le module [fileinput.input() lit toutes les lignes des noms de fichiers d’entrée spécifiés dans les arguments de la ligne de commande. Si aucun argument n’est spécifié, il lira l’entrée standard fournie.
L’exemple ci-dessous illustre la lecture à partir du nom de fichier d’entrée spécifié.
Nous utiliserons le fichier sample.txt ci-dessous.
Hello
Line1
Line2
Sous le script read.py.
import fileinput
for line in fileinput.input():
print(line.rstrip())
Nous l’exécutons comme ceci:
python read.py "sample.txt"
Production:
Hello
Line1
Line2
L’exemple ci-dessous illustre la lecture à partir de l’entrée standard.
import fileinput
for line in fileinput.input():
print("Output:", line.rstrip())
L’exécution et la sortie sont montrées ci-dessous.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z

Nous pouvons également sauvegarder les données à traiter ultérieurement de cette manière:
import fileinput
data = []
for line in fileinput.input():
data.append(line.rstrip())
Notez que nous utilisons line.rstrip(). Cela permet de supprimer la nouvelle ligne qui suit.
En tapant y, on supprime toutes les variables.
Utilisez sys.stdin pour lire à partir de stdin en Python
Une autre approche consiste à utiliser sys.stdin pour lire à partir de stdin en Python. L’exemple ci-dessous illustre la lecture des données de stdin ligne par ligne:
import sys
for line in sys.stdin:
print("Output:", line.rstrip())
L’exécution et la sortie sont montrées ci-dessous.
python read.py
Line 1
Output: Line 1
Line 2
Output: Line2
^Z
Nous pouvons également lire toutes les données de stdin en une seule fois au lieu de les lire ligne par ligne.
L’exemple ci-dessous illustre cela:
import sys
data = sys.stdin.readlines()
data = [line.rstrip() for line in data]
Notez que nous utilisons line.rstrip(). C’est pour supprimer le saut de ligne qui suit.
Conclusion
Nous avons discuté de 2 méthodes, fileinput.input() et sys.stdin, pour lire l’entrée stdin en Python. fileinput.input() peut lire les données du nom de fichier spécifié dans l’argument de la ligne de commande ou de l’entrée standard, alors que sys.stdin ne peut lire que les données de l’entrée standard.