Ouverture et fermeture d'un fichier

DéfinitionChemin d'un fichier

Un fichier est rangé sur le disque à une place précise définie par le chemin d'accès. Ce chemin inclus son nom. Pour ouvrir un fichier, il faut connaître ce chemin d'accès.

Un fichier doit être ouvert avant d'effectuer une opération de lecture ou d'écriture.

Un fichier est ouvert dans un mode spécifié. Par exemple il peut être ouvert en écriture, la lecture, en ajout,..

Le fichier doit être fermé pour s'assurer que toutes les opérations d'écritures ont été faites et qu'il puisse être ouvert par une autre application.

DéfinitionMode d'ouverture d'un fichier

Caractère

Signification

'r'

ouvre en lecture (par défaut)

'w'

ouvre en écriture, tronquant le fichier

'x'

ouvre pour une création exclusive, échouant si le fichier existe déjà

'a'

ouvre en écriture, ajoutant à la fin du fichier s'il existe

'b'

mode binaire

't'

mode texte (par défaut)

'+'

open for updating (reading and writing)

Les modes t et b sont complémentaires. Dans le mode 't', les caractères du fichier '\n', '\r', ou '\r\n' seront remplacés par un caractère '\n'. Dans le mode 'b' les caractères du fichier ne seront pas modifiés.

Méthode

Pour ouvrir un fichier, il faut appeler la commande open :

f = open(chemin, mode)

Le résultat de l'appel est un fichier rangé dans la variable f.

Si le fichier ne peut être ouvert alors une erreur est lancée. Pour éviter cette erreur, il faut utiliser la gestion des exceptions.

L'écriture ou la lecture du fichier peut être faite en utilisant les méthodes write ou read de l'objet retourné par la méthode open.

Exemple

Dans cet exemple le fichier est en ouvert en écriture en mode texte.

1
try:
2
    f = open("c:/tmp/mon_fichier.txt", "wt")
3
except:
4
    print("Le fichier n'a pu être ouvert")
5

Si le fichier n'a pu être ouvert, une exception est lancée et un message s'affiche.

ComplémentType retourné par open

https://docs.python.org/fr/3.8/library/functions.html#open

« Lorsque open() est utilisé pour ouvrir un fichier en mode texte (w, r, wt, rt, etc.), il donne une classe fille de io.TextIOBase (spécifiquement : io.TextIOWrapper). Lors de l'ouverture d'un fichier en mode binaire avec tampon, la classe donnée sera une fille de io.BufferedIOBase. La classe exacte varie : en lecture en mode binaire elle donne une io.BufferedReader, en écriture et ajout en mode binaire c'est une io.BufferedWriter, et en lecture/écriture, c'est une io.BufferedRandom. Lorsque le tampon est désactivé, le flux brut, une classe fille de io.RawIOBase, io.FileIO est donnée. »

Définition

Pour fermer un fichier, il faut utiliser la méthode close.

Si un fichier n'est pas fermer des écritures dans le fichier peuvent être perdues.

1
try:
2
    f = open("c:/tmp/mon_fichier.txt", "wt")
3
    # opérations sur le fichier
4
    f.close()
5
except:
6
    print("Le fichier n'a pu être ouvert")
7

RappelUtilisation du gestionnaire de contexte

Le gestionnaire de contexte permet de ne pas s'occuper de la fermeture du fichier

1
try:
2
    with open("c:/tmp/mon_fichier.txt", "wt") as f
3
        # opérations sur le fichier
4
except:
5
    print("problème d'ouverture ou d'accès au fichier")