Connection Menu Contenu

1788
membres
00h57
06
février
2012

Pseudo

Mot de passe

Accueil FORUM
repère : ROMMY Prod > Le tutoriel PYTHON > Manipulation de fichiers

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 :

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.
porgramme.py et dossier "data"
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'. 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.)

chapitre precedent sommaire sommaire chapitre precedent
repère : ROMMY Prod > Le tutoriel PYTHON > Manipulation de fichier
Qui suis-je ? Contact Charte du site
Plan du site Accessibilité du site

Copyright © ROMMY Production
Le cours, les jeux et les logiciels sont la propriété de son auteur.
Toute reproduction totale ou partielle du cours est interdite sans l'accord de l'auteur.
La modification des jeux et logiciels est interdite sans l'accord de l'auteur.