Entrées/Sorties de fichiers en Python : Maîtriser les opérations de lecture et d'écriture
Ce chapitre couvre toutes les fonctions de base d'entrée/sortie disponibles en Python. Pour plus de fonctions, veuillez consulter la documentation standard de Python.
Affichage à l'écran
La méthode la plus simple pour produire une sortie consiste à utiliser l'instruction print, où vous pouvez passer zéro ou plusieurs expressions séparées par des virgules. Cette fonction convertit les expressions que vous passez en chaîne de caractères et écrit le résultat sur la sortie standard :
#!/usr/bin/python
print("Python is really a great language,", "isn't it?")
Cela produit le résultat suivant sur votre écran :
Python is really a great language, isn't it?
Lecture de l'entrée clavier
Python fournit deux fonctions intégrées pour lire une ligne de texte depuis l'entrée standard, qui provient par défaut du clavier :
raw_input(Python 2)input
La fonction raw_input (Python 2)
La fonction raw_input([prompt]) lit une ligne depuis l'entrée standard et la renvoie sous forme de chaîne (en supprimant le saut de ligne final).
#!/usr/bin/python
str = raw_input("Enter your input: ")
print("Received input is : ", str)
Cela vous invite à entrer une chaîne et affiche la même chaîne à l'écran. Si vous tapez "Hello Python!", la sortie ressemble à ceci :
Enter your input: Hello Python
Received input is : Hello Python
La fonction input
La fonction input([prompt]) est équivalente à raw_input, sauf qu'elle suppose que l'entrée est une expression Python valide et renvoie le résultat évalué.
#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is : ", str)
Cela produirait le résultat suivant pour l'entrée saisie :
Enter your input: [x*5 for x in range(2,10,2)]
Received input is : [10, 20, 30, 40]
Ouverture et fermeture de fichiers
Jusqu'à présent, vous lisiez et écriviez sur l'entrée et la sortie standard. Maintenant, nous verrons comment utiliser de vrais fichiers de données.
Python fournit par défaut les fonctions et méthodes de base nécessaires pour manipuler les fichiers. Vous pouvez effectuer la plupart des manipulations de fichiers à l'aide d'un objet file.
La fonction open
Avant de pouvoir lire ou écrire un fichier, vous devez l'ouvrir à l'aide de la fonction intégrée open() de Python. Cette fonction crée un objet file, qui sera utilisé pour appeler d'autres méthodes de support associées.
Syntaxe
file_object = open(file_name [, access_mode][, buffering])
Détails des paramètres :
file_name : L'argument
file_nameest une valeur de chaîne contenant le nom du fichier auquel vous souhaitez accéder.access_mode : Le
access_modedétermine le mode dans lequel le fichier doit être ouvert (lecture, écriture, ajout, etc.). Une liste complète des valeurs possibles est donnée dans le tableau ci-dessous. Ce paramètre est optionnel et le mode d'accès par défaut est la lecture (r).buffering : Si la valeur de
bufferingest 0, aucune mise en tampon n'a lieu. Si elle est 1, une mise en tampon par ligne est effectuée. Si vous spécifiez un entier supérieur à 1, la mise en tampon est effectuée avec la taille de tampon indiquée. Si elle est négative, la taille du tampon est la valeur par défaut du système.
Voici la liste des différents modes d'ouverture d'un fichier :
| N° | Modes et description |
|---|---|
| 1 | r Ouvre un fichier en lecture seule. Le pointeur est placé au début. Mode par défaut. |
| 2 | rb Ouvre un fichier en lecture seule en format binaire. Pointeur au début. |
| 3 | r+ Ouvre un fichier en lecture et écriture. Pointeur au début. |
| 4 | rb+ Ouvre un fichier en lecture et écriture en format binaire. Pointeur au début. |
| 5 | w Ouvre un fichier en écriture seule. Écrasement si le fichier existe, sinon création. |
| 6 | wb Ouvre un fichier en écriture seule en format binaire. Écrasement ou création. |
| 7 | w+ Ouvre un fichier en lecture et écriture. Écrasement ou création. |
| 8 | wb+ Ouvre un fichier en lecture et écriture en format binaire. Écrasement ou création. |
| 9 | a Ouvre un fichier en ajout. Pointeur à la fin si le fichier existe, sinon création. |
| 10 | ab Ouvre un fichier en ajout en format binaire. Pointeur à la fin ou création. |
| 11 | a+ Ouvre un fichier en ajout et lecture. Pointeur à la fin ou création. |
| 12 | ab+ Ouvre un fichier en ajout et lecture en format binaire. Pointeur à la fin ou création. |
Attributs de l'objet file
Une fois un fichier ouvert, vous pouvez obtenir diverses informations le concernant.
| N° | Attribut et description |
|---|---|
| 1 | file.closed Renvoie true si le fichier est fermé, false sinon. |
| 2 | file.mode Renvoie le mode d'accès avec lequel le fichier a été ouvert. |
| 3 | file.name Renvoie le nom du fichier. |
| 4 | file.softspace Renvoie false si un espace est explicitement requis avec print, true sinon. |
Exemple
#!/usr/bin/python
# Ouvrir un fichier
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
print("Closed or not : ", fo.closed)
print("Opening mode : ", fo.mode)
print("Softspace flag : ", fo.softspace)
Cela produit le résultat suivant :
Name of the file: foo.txt
Closed or not : False
Opening mode : wb
Softspace flag : 0
La méthode close()
La méthode close() d'un objet file vide les informations non écrites et ferme l'objet fichier, après quoi aucune écriture ne peut plus être effectuée.
Python ferme automatiquement un fichier lorsque l'objet de référence est réassigné. Il est toutefois recommandé d'utiliser close() pour fermer un fichier.
Syntaxe
fileObject.close()
Exemple
#!/usr/bin/python
# Ouvrir un fichier
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
# Fermer le fichier ouvert
fo.close()
Lecture et écriture de fichiers
L'objet file fournit un ensemble de méthodes d'accès pour faciliter la vie. Nous verrons comment utiliser les méthodes read() et write().
La méthode write()
La méthode write() écrit une chaîne dans un fichier ouvert. Notez que les chaînes Python peuvent contenir des données binaires, pas seulement du texte.
La méthode write() n'ajoute pas de caractère de nouvelle ligne ('\n') à la fin de la chaîne.
Syntaxe
fileObject.write(string)
Exemple
#!/usr/bin/python
# Ouvrir un fichier
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
# Fermer le fichier ouvert
fo.close()
Cette méthode crée le fichier foo.txt et y écrit le contenu donné, puis ferme le fichier. Si vous ouvrez ce fichier, il contiendra :
Python is a great language.
Yeah its great!!
La méthode read()
La méthode read() lit une chaîne depuis un fichier ouvert. Les chaînes Python peuvent contenir des données binaires en plus des données textuelles.
Syntaxe
fileObject.read([count])
Le paramètre est le nombre d'octets à lire. Cette méthode commence la lecture au début du fichier et si count est omis, elle essaie de lire le maximum possible, jusqu'à la fin du fichier.
Exemple
Prenons le fichier foo.txt créé ci-dessus.
#!/usr/bin/python
# Ouvrir un fichier
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
# Fermer le fichier ouvert
fo.close()
Cela produit le résultat suivant :
Read String is : Python is
Positions dans le fichier
La méthode tell() indique la position courante dans le fichier ; en d'autres termes, la prochaine lecture ou écriture se produira à cet octet depuis le début du fichier.
La méthode seek(offset[, from]) modifie la position courante. L'argument offset indique le nombre d'octets à déplacer. L'argument from spécifie la position de référence.
Si
from= 0 : début du fichier (par défaut)Si
from= 1 : position couranteSi
from= 2 : fin du fichier
Exemple
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
# Vérifier la position courante
position = fo.tell()
print("Current file position : ", position)
# Repositionner au début
position = fo.seek(0, 0)
str = fo.read(10)
print("Again read String is : ", str)
fo.close()
Renommer et supprimer des fichiers
Le module os de Python fournit des méthodes pour effectuer des opérations sur les fichiers, telles que le renommage et la suppression.
Pour utiliser ce module, importez-le d'abord, puis appelez les fonctions associées.
La méthode rename()
La méthode rename() prend deux arguments : le nom de fichier actuel et le nouveau nom.
os.rename(current_file_name, new_file_name)
Exemple
#!/usr/bin/python
import os
# Renommer test1.txt en test2.txt
os.rename("test1.txt", "test2.txt")
La méthode remove()
Utilisez remove() pour supprimer un fichier en fournissant son nom.
os.remove(file_name)
Exemple
#!/usr/bin/python
import os
# Supprimer test2.txt
os.remove("test2.txt")
Répertoires en Python
Tous les fichiers sont contenus dans divers répertoires. Le module os possède plusieurs méthodes pour créer, supprimer et changer de répertoire.
La méthode mkdir()
Crée un répertoire dans le répertoire courant.
os.mkdir("newdir")
Exemple
#!/usr/bin/python
import os
os.mkdir("test")
La méthode chdir()
Change le répertoire courant.
os.chdir("newdir")
Exemple
#!/usr/bin/python
import os
os.chdir("/home/newdir")
La méthode getcwd()
Affiche le répertoire de travail courant.
os.getcwd()
Exemple
#!/usr/bin/python
import os
os.getcwd()
La méthode rmdir()
Supprime le répertoire passé en argument. Le répertoire doit être vide.
os.rmdir('dirname')
Exemple
#!/usr/bin/python
import os
os.rmdir("/tmp/test")
Méthodes liées aux fichiers et répertoires
Trois sources importantes fournissent une large gamme de méthodes utilitaires :
Méthodes de l'objet
file: manipulation de fichiers.Méthodes de l'objet
os: traitement des fichiers et répertoires.
Python
- Maîtriser l'entrée/sortie en C : scanf() et printf() expliqués
- Gestion des fichiers en C : Maîtriser les E/S avec fopen, fprintf, fread et fseek
- Maîtriser les E/S et l'importation de modules en Python : Guide pratique
- Entrées/sorties de fichiers Python : maîtriser les opérations sur les fichiers
- Maîtriser les opérations sur les répertoires et fichiers en Python
- Vérifier l'existence de fichiers et répertoires en Python – Guide pratique
- Maîtriser les entrées/sorties fichiers en C : Création, ouverture et gestion
- Comprendre les fichiers d'en-tête C : Types, utilisation et bonnes pratiques
- Maîtriser les entrées/sorties fichier en C++ : Lecture et écriture avec fstream