Manipulation de fichiers
Quand vous faîtes un programme, la plupart du temps vous aurez besoin de récupérer des données même
après avoir redémarrer l'ordinateur. Pour cela, vous allez utiliser des fichiers.
Les fichiers
Quand on crée des programmes, on utilise des variables pour garder des données car celles-ci mémorisent
la donnée qu'on lui a fournie et nous la redonne quand on lui demande.
Le problème des variables, c'est qu'elles mémorisent temporairement les données. Je veux dire par-là
que lorsque vous arrêtez le programme, les variables n'existent plus et à la prochaine utilisation du
programme, on recrée une variable qui n'a toujours rien eu comme ordre et ne peut donc pas nous
redonner les données que l'on aurait voulu voir.
Donc si l'on veut garder des données, on va devoir les mettre dans autre chose que dans une variable.
Et on va donc les mettre dans des fichiers.
Pour utiliser des fichiers, il faut d'abord les ouvrir, puis les utiliser (lire ou écrire) et terminer
en le refermant.
Ouverture d'un fichier
Pour ouvrir un fichier, il faut d'abord savoir qu'est-ce qu'on veut en faire car l'ouverture d'un
fichier pour la lecture est différente de l'ouverture pour l'écriture.
Voici ce qui faut taper pour ouvrir un fichier ;
variable_fichier = open("nom_fichier",
"mode")
on crée une variable qui va recevoir l'ouverture du fichier.
Cette fonction à 2 paramètres :
- le premier correspond au chemin du fichier. On peut utiliser deux cheminements :
- l'absolu : Si le fichier est dans le même dossier que le programme, vous devez
mettre seulement le nom du fichier.
Si le fichier est dans un dossier contenu dans le dossier du programme, vous devez
taper "nom_dossier\\nom_fichier".
- Vous devez mettre le chemin complet. ( "C:\\bidule\\dossier\\nom_fichier" )
Pour les deux cas, si le fichier est présent dans un dossier différent, vous devez mettre
\ mais comme la barre est utile pour certains caractères (\n, \r, ...), vous devrez mettre
\\ pour éviter que le programme croit qu'il y a un caractère spécial.
- Le deuxième correspond au mode d'ouverture.
- 'r' : Ce mode permet d'ouvrir le fichier en mode lecture.
- 'w' : Ce mode permet d'ouvrir le fichier en mode écriture. Ce mode efface le
fichier puis écrit dedans. (Si le fichier n'existe pas, il est créé.)
- 'a' : Ce mode permet d'ouvrir le fichier en mode écriture. Ce mode ajoute le
texte à écrire à la fin du fichier. (Si le fichier n'existe pas, il est créé.)
Fermer le fichier
Une fois que l'on a utilisé le fichier et que l'on en a plus besoin, il faut le refermer pour libérer
la mémoire qu'utilisait la variable d'ouverture.
Pour fermer le fichier, on utilise une autre procédure, close() :
variable_fichier.close()
Grâce à ceci vous fermer proprement votre fichier.
Ecrire dans un fichier
Comme vous le voyez avec l'ouverture, on écrit soit avec le mode 'w', soit avec le mode 'a'. Donc pour
cette partie, nous allons utiliser seulement ceux-ci.
Premièrement je vais vous demander de créer un dossier nommé "data" au même endroit que votre
programme. Ensuite on créera un fichier dans ce dossier.

programme et dossier "data".
Pour écrire quelque chose dans le fichier, on utilise ceci :
fichier.write("ce que vous voulez mettre")
Donc le code complet :
fichier = open("data.txt",
"w")
fichier.write("ce que vous voulez mettre")
fichier.close()
Le fichier "data.txt" à été créé mais au même endroit que le programme. Déplacez le dans le dossier,
et je vous expliquerai comment faire. On ajoutera aussi une nouvelle ligne :
fichier = open("data\\data.txt",
"a")
fichier.write("\nvoici une nouvelle ligne")
fichier.close()
Ici
data\\ permet de chercher le fichier dans le dossier data car on l'avait déplacé.
Ensuite on ajoute la phrase car j'utilise le mode 'a'.
Comme je veux une nouvelle ligne, j'ai mis '\n'. J'aurai pu le mettre à la fin de l'exemple du dessus.
Maintenant nous allons voir un exemple : Enregistrer les records pour le jeu "plus ou moins".
Voici le jeu sans l'enregistrement des records :
Le code source.
Et maintenant avec les fichiers :
Ce qu'on aura besoin de mettre dans le fichier, c'est le nombre de tentatives effectué. Bien sûr on
l'enregistre après avoir gagner, donc le code pour écrire sera mis dans le
"if utilisateur == nbAleatoire :" et avant le changement "tentatives = -1".
# on enregistre le nombre de coups
fichier = open("data.txt", "w")
text = "record : " + str(10-tentatives)
fichier.write(text)
fichier.close()
Donc on ouvre le fichier, s'il n'existe pas, il est créé automatiquement.
Ensuite on prépare le texte qui sera écrit. Ici on va écrire "record : " et le nombre de coups. Comme
on ne peut pas ajouter des nombres à du texte, on va transformer en texte avec "str()".
Ensuite on écrit ce que l'on a préparé.
Et on finit par fermer le fichier.
Donc maintenant on a enregistré le nombre de coup. Le problème c'est qu'on ne peut pas lire le record
et donc le modifier si on a fait mieux.
C'est pourquoi je vais vous montrer comment lire dans un fichier.
Lire un fichier
Pour lire dans un fichier, il y a plusieurs façons de le faire. Mais elles utilisent toutes le mode 'r'.
- .read() : Permet de lire tout le fichier. On récupère sous forme de chaîne.
fichier = open("data.txt", "r")
chaine = fichier.read()
fichier.close()
- .readline() : Permet de lire une ligne et se positionne pour lire la suivante. On
récupère sous forme de chaîne.
fichier = open("data.txt", "r")
chaine = fichier.readline()
fichier.close()
- .readlines() : Permet de lire toutes les lignes. On récupère sous forme d'une liste.
Chaque ligne correspond à une case de la liste.
fichier = open("data.txt", "r")
chaine = fichier.readlines()
fichier.close()
ATTENTION le caractère de saut de ligne (\n) est aussi récupéré.
Revenons à l'exemple du jeu. Vous devez avant tout créer le fichier s'il n'existe pas car le mode 'r'
ne le crée pas. (Si vous avez fait la partie "écrire", il doit exister.)
Ecrivez à l'intérieur "record : 9999" comme ça vous êtes sur que l'on va améliorer.
Ceci permet de pouvoir lire le fichier même si on ne la pas encore utilisé. Bien sûr il existe une
méthode pour éviter d'avoir une erreur quand le fichier n'existe pas, mais je ne vous l'expliquerais
pas dans ce cours car c'est plus compliqué.
Nous allons lire ce que contient le fichier, seulement le chiffre : (en fait on pouvait ne pas mettre
"record : " mais je voulais vous le montrer de cette manière.).
On fait ceci avant de commencer à demander un chiffre donc avant le while.
fichier = open("data.txt", "r")
chaine_fichier = fichier.readline()
record = int(chaine_fichier[9:])# récupère
seulement le chiffre
fichier.close()
Alors je vais vous expliquer la 3ème ligne. chaine_fichier[9:] est une tranche qui permet d'enlever
la partie "record : ", On demande de ne prendre qu'à partir de l'index 9 jusqu'a la fin. "record : "
est composé de 9 caractères donc le chiffre commence à 10 mais comme l'index commence à 0 et non 1,
c'est pour ça que j'ai mis 9.
Grâce à ceci, on a récupéré le chiffre mais il est de type texte donc on le transforme en chiffre avec
int().
Voilà, on a récupéré le record. Ensuite après avoir trouvé le chiffre, il faut tester si on a battu le
record. Si c'est le cas on l'enregistre dans le fichier.
On avait mis ce code :
# on enregistre le nombre de coups
fichier = open("data.txt", "w")
text = "record : " + str(10-tentatives)
fichier.write(text)
fichier.close()
Maintenant on le remplace par :
# Si le record est battu, on enregistre le nombre de coups
if ((10-tentatives) < record)
fichier = open("data.txt", "w")
text = "record : " + str(10-tentatives)
fichier.write(text)
fichier.close()
Donc si notre nombre de coups est inférieur au record, on l'enregistre.
Voici le code complet :
Le code source
Conclusion
Voilà !!!
Ce cours d'apprentissage des bases du langage Python est terminé.
Vous pourrez donc créer vos propres programmes.
Ceci est plutôt destiné à faire des scripts et non des logiciels ou jeux avec du graphisme.
Si c'est ce dont vous aimerez faire, vous devrez apprendre en plus à utiliser des librairies
graphiques. (Regroupement de plusieurs fonctions permettant de faire du graphisme.)