Comment lire les entrées de stdin en Python

Hassan Saeed 30 janvier 2023
  1. Utilisez fileinput.input() pour lire à partir de stdin en Python
  2. Utilisez sys.stdin pour lire à partir de stdin en Python
  3. Conclusion
Comment lire les entrées de stdin en Python

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

Lecture en Python à partir de l’entrée stdin

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.

Article connexe - Python Input