Écriture dans des fichiers

14.2 Écriture dans des fichiers

Objectifs d'apprentissage

À la fin de cette section, vous devriez être capable de :

  • Comprendre comment ouvrir un fichier en écriture.
  • Expliquer les différents modes d'ouverture de fichier en Python.
  • Démontrer l'utilisation de la fonction write() pour écrire dans un fichier.
  • Comprendre l'importance de fermer un fichier.

Ouvrir un fichier en écriture

Un fichier peut être ouvert en lecture, ce qui n'autorise aucune modification, ou en écriture, ce qui permet d'apporter des modifications au fichier. Le mode définit si un fichier est ouvert en lecture seule ou en écriture. Le mode par défaut de la fonction open() est la lecture seule. Un second paramètre définit le mode.

Ex. : open("output.txt", 'w') ouvre le fichier output.txt en mode écriture. Le tableau suivant présente les modes courants.

Paramètre Nom du mode et description Exemple
'r'
Mode lecture :
Ouvre le fichier spécifié en lecture.
Si le fichier n'existe pas, une erreur se produit.
Lorsqu'aucun paramètre de mode n'est utilisé, le comportement par défaut consiste à ouvrir le fichier en mode lecture.

fileobj = open("input.txt")
équivaut à :
fileobj = open("input.txt", 'r')

'w'
Mode écriture :
Ouvre le fichier spécifié en écriture.
Si le fichier n'existe pas, il est créé.
Si le fichier existe déjà, son contenu est écrasé.

fileobj = open("output.txt", 'w')

'a'
Mode ajout :
Ouvre le fichier spécifié en mode ajout, ce qui signifie que des informations sont ajoutées à la fin du fichier existant.
Si le fichier n'existe pas, il est créé.

fileobj = open("log.txt", 'a')

Tableau 14.1 Modes pour la fonction
open()
.

Concepts en pratique

Modes de fichiers

Supposons qu'un fichier nommé logfile.txt existe.

1.
Pour lire logfile.txt, laquelle des lignes de code suivantes est la plus appropriée ?
  1. logfile = open("logfile.txt")
  2. logfile = open("logfile.txt", 'w')
  3. logfile = open("logfile.txt", 'a')
2.
Des ajouts doivent être effectués dans logfile.txt. Laquelle des lignes de code suivantes est la plus appropriée ?
  1. infile = open("logfile.txt")
  2. infile = open("logfile.txt", 'w')
  3. infile = open("logfile.txt", 'a')
3.
Un nouveau fichier nommé newlog.txt doit être créé. Laquelle des lignes de code suivantes est la plus appropriée ?
  1. logfile = open("newlog.txt")
  2. logfile = open("newlog.txt", 'w')
  3. logfile = open("newlog.txt", 'a')

Utiliser
write()
et
close()

La fonction write() sert à écrire dans un fichier déjà ouvert. La fonction write() n'accepte qu'un paramètre de type chaîne. Les autres types de variables doivent être convertis en chaîne avant d'être écrits à l'aide de write().

La fonction write() n'ajoute pas automatiquement de caractère de retour à la ligne, contrairement à la fonction print(). Un saut de ligne doit être ajouté explicitement en insérant un caractère de retour à la ligne ('\n').

La fonction write() écrit automatiquement dans une mémoire temporaire appelée tampon de fichier. Pour garantir que les informations sont bien écrites dans le fichier, la fonction close() doit être utilisée. La fonction close() finalise les modifications et ferme le fichier.

Exemple 14.2

Écrire et ajouter dans un fichier

    """Operations for writing and appending to files."""

    # Create a new file
    opfile = open("output.txt", 'w')

    # Writing to the file
    opfile.write("Écriture dans un nouveau fichier.")

    # To add another line the newline character must be used
    opfile.write("\nDeuxième ligne.")

    # Ensure changes are saved by closing the file
    opfile.close()

    # Read and display the contents of the file
    infile = open("output.txt")
    print("\nLecture du fichier d'origine :\n")
    print(infile.read())
    infile.close()

    # Reopen the file in append mode to add to the file
    opfile = open("output.txt", 'a')

    # Note the use of newline characters
    opfile.write("\nAjout au fichier.")
    opfile.write("\nAjout d'une autre ligne.")

    # Ensure changes are saved by closing the file
    opfile.close()

    # Read and display the contents of the modified file
    infile = open("output.txt")
    print("\nLecture du fichier modifié :\n")
    print(infile.read())
    infile.close()

La sortie du code est la suivante :

    Read the original file:

    Writing to a new file.
    Second line.

    Read the modified file:

    Writing to a new file.
    Second line.
    Adding to the file.
    Adding another line.

Faites le point

write() et close()

Concepts en pratique

Écriture dans des fichiers

resources.txt existe déjà. Que se passerait-il pour chacun des extraits de code suivants ?

4.
outfile = open("resources.txt", 'w')
outfile.write("new content")
  1. rien
  2. Le contenu du fichier resources.txt est écrasé par la ligne "new content".
  3. Le fichier resources.txt est écrasé, mais le contenu de resources.txt est incertain.
5.
outfile = open("resources.txt", 'w')
outfile.write("new content")
outfile.close()
  1. Le contenu du fichier resources.txt est écrasé par la ligne "new content".
  2. La ligne "new content" est ajoutée à la fin de resources.txt.
6.
outfile = open("resources.txt", 'a')
outfile.write("new content")
outfile.close()
  1. Le contenu du fichier resources.txt est écrasé par la ligne "new content".
  2. La ligne "new content" est ajoutée à la fin de resources.txt.

À vous d'essayer

Écriture dans un nouveau fichier

Écrivez une ligne de texte dans un fichier nommé out.txt. N'oubliez pas d'utiliser close(). out.txt ne doit contenir que la ligne de texte que vous avez écrite.

À vous d'essayer

Écriture dans un fichier existant

Ajoutez deux lignes de texte au fichier nommé out.log, de sorte qu'out.log comporte trois lignes après l'exécution du code.

Indication : N'oubliez pas qu'il vous faut un caractère de retour à la ligne.