Utilisation des Différents Modes de Fichier
Glissez pour afficher le menu
Apprendre à utiliser différents modes de fichiers en Python pour la lecture, l'écriture et l'ajout de fichiers à l'aide d'exemples pratiques.
Les modes de fichiers Python incluent : 'r' pour la lecture, 'w' pour l'écriture (crée/tronque), 'a' pour l'ajout (crée si absent), 'b' pour le mode binaire, et '+' pour lecture/écriture. Choisir le mode approprié permet d'éviter la perte de données.
Mode Lecture
Le mode lecture ('r') ouvre un fichier existant uniquement pour la lecture. Il n'est pas possible d'écrire ou de modifier le fichier avec ce mode. Si le fichier n'existe pas, Python renverra une erreur FileNotFoundError. Utiliser ce mode pour accéder et lire les données d'un fichier sans modifier son contenu.
123456with open("sample.txt", "w") as f: f.write("This is a sample file.\nSecond line.") with open("sample.txt", "r") as f: content = f.read() print(content)
Ce code crée un fichier texte avec un contenu d'exemple, puis lit et affiche le contenu du fichier.
Mode écriture
Le mode écriture (w) en Python ouvre un fichier pour l'écriture. Utiliser le mode w lorsque vous souhaitez repartir de zéro avec un fichier, soit en en créant un nouveau, soit en effaçant un fichier existant pour remplacer son contenu. Attention : toutes les données existantes dans le fichier seront perdues lorsque vous l'ouvrez avec le mode w.
1234567891011with open("write_example.txt", "w") as file: file.write("This file was created or overwritten using write mode.\n") with open("write_example.txt", "r") as file: print(file.read()) with open("write_example.txt", "w") as file: file.write("Every time you run this code, the contents are replaced.\n") with open("write_example.txt", "r") as file: print(file.read())
Ce code affiche le contenu du fichier après la première écriture puis après l'écrasement, afin de montrer comment les données précédentes sont effacées et remplacées par un nouveau contenu.
Mode ajout
Le mode ajout, spécifié par le mode de fichier 'a', ouvre un fichier en écriture en ajoutant le nouveau contenu à la fin du fichier. Si le fichier n'existe pas, il sera créé automatiquement. Ce mode est utile lorsque l'on souhaite conserver les données existantes et simplement ajouter des informations supplémentaires à la fin, comme pour consigner de nouvelles entrées ou mettre à jour des enregistrements au fil du temps. Contrairement au mode écriture ('w'), le mode ajout ne supprime ni n'écrase jamais le contenu existant.
123456789with open("append_example.txt", "w") as f: f.write("Original line\n") with open("append_example.txt", "a") as f: f.write("Appended line\n") with open("append_example.txt", "r") as f: result = f.read() print(result.strip())
Ce code crée d'abord un fichier avec un contenu initial. Il ouvre ensuite le même fichier en mode ajout ('a') pour ajouter une nouvelle ligne à la fin. Enfin, il lit et affiche le contenu complet du fichier afin que vous puissiez voir que les nouvelles données ont été ajoutées à la fin sans supprimer ni modifier le contenu d'origine.
Mode binaire
Le mode binaire est utilisé lorsque vous devez lire ou écrire des fichiers sous forme d'octets plutôt que de texte. Ceci est essentiel pour travailler avec des fichiers non textuels, tels que des images, des fichiers audio ou des exécutables. Vous combinez 'b' avec d'autres modes de fichier, comme 'rb' pour la lecture en mode binaire ou 'wb' pour l'écriture en mode binaire.
Lorsque vous ouvrez un fichier en mode binaire, les données sont lues et écrites exactement comme des octets bruts. Aucun encodage ou décodage n'a lieu, vous devez donc manipuler les données sous forme d'objets bytes. Cela évite les problèmes qui peuvent survenir lors de la lecture ou de l'écriture de fichiers qui n'utilisent pas un encodage texte standard.
12345678byte_data = b"\x48\x65\x6c\x6c\x6f, binary world!" # This is 'Hello, binary world!' in bytes with open("sample_binary.bin", "wb") as f: f.write(byte_data) with open("sample_binary.bin", "rb") as f: read_bytes = f.read() print(read_bytes)
Le code écrit une chaîne d’octets contenant le message 'Hello, binary world!' dans un fichier nommé sample_binary.bin en utilisant le mode écriture binaire ('wb'). Le b dans le mode garantit que le fichier est traité comme des données binaires, et non comme du texte. Après l’écriture, le fichier est rouvert en mode lecture binaire ('rb') pour lire les octets bruts. Le code affiche ensuite la représentation lisible de l’objet bytes.
Mode lecture et écriture
Le mode de fichier r+ permet à la fois de lire et d’écrire dans un fichier existant. Lorsque vous ouvrez un fichier avec r+, vous pouvez lire son contenu, le modifier ou ajouter de nouvelles données à n’importe quelle position. Cependant, le fichier doit déjà exister : r+ ne créera pas de nouveau fichier s’il n’en trouve pas avec le nom spécifié.
Ce mode est utile lorsque vous devez mettre à jour ou traiter des données dans un fichier sans perdre son contenu existant. Toute opération d’écriture commencera à la position actuelle du fichier, ce qui permet de contrôler précisément où les modifications ont lieu grâce à des méthodes de gestion du pointeur de fichier comme seek().
1234567891011121314151617# Writing initial content to the file with open("data.txt", "w") as f: f.write("First line\nSecond line\n") # Opening the file in r+ mode for reading and updating with open("data.txt", "r+") as f: # Reading and printing the original content original_content = f.read() print("Before update:\n" + original_content.strip()) # Moving file pointer to the beginning f.seek(0) # Overwriting the first line f.write("Updated first line\n") # Moving pointer to the start to read the updated content f.seek(0) updated_content = f.read() print("After update:\n" + updated_content.strip())
Ce résultat montre que la première ligne du fichier a bien été écrasée. En utilisant le mode lecture/écriture ('r+'), il est possible de modifier des parties spécifiques d’un fichier – par exemple, changer uniquement la première ligne – sans effacer ou réécrire l’ensemble du fichier. Cela est utile pour éditer des données existantes tout en préservant le reste du contenu du fichier.
Lorsque vous utilisez le mode 'r+', toute nouvelle donnée écrite écrasera le contenu existant à partir de la position actuelle du pointeur de fichier. Si le nouveau contenu est plus court que l’original, la partie restante de l’ancienne ligne subsiste dans le fichier. Cela signifie que des fragments partiels de l’ancien contenu peuvent encore apparaître après la nouvelle écriture. Le fichier n’est pas tronqué automatiquement, il faut donc savoir que des caractères supplémentaires de l’ancien contenu peuvent persister au-delà de la fin de vos nouvelles données.
1. Quel mode d’ouverture de fichier faut-il utiliser pour lire un fichier texte existant sans le modifier ?
2. Quel mode de fichier faut-il utiliser pour ajouter de nouvelles données à la fin d’un fichier texte existant sans supprimer son contenu actuel ?
Merci pour vos commentaires !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion