Nous allons beaucoup travailler sur des répertoires et des fichiers, autrement dit sur votre disque ou clef ou autre support de stockage de données. Donc je vais vous donner quelques informations générales avant de commencer pour que, malgré vos différents systèmes et configurations, vous puissiez essayer les instructions que je vais vous montrer.
Mais d'abord, pourquoi lire ou écrire dans des fichiers ?
Peut-être que vous ne voyez pas trop l'intérêt de savoir lire et écrire dans des fichiers, hormis quelques applications de temps à autre. Mais souvenez-vous que, quand vous fermez votre programme, aucune de vos variables n'est sauvegardée. Or, les fichiers peuvent être, justement, un excellent moyen de garder les valeurs de certains objets pour pouvoir les récupérer quand vous rouvrirez votre programme. Par exemple, un petit jeu peut enregistrer les scores des joueurs.
Si, dans notre TP ZCasino, nous avions pu enregistrer la somme que nous avions en poche au moment de quitter le casino, nous aurions pu rejouer sans repartir de zéro.
AVANT DE COMMENCER
Il faut créer un répertoire JUPYTER sur votre clef usb (gardez les majuscules).Nous considèrerons ce repertoire D:\JUPYTER comme la racine (le point de départ).
Créez ensuite un répertoire lireEcrireFichier dans le répertoire JUPYTER.
SE REPERER
Lancez Edupython et saisir dans la console :
>>>import os
>>>print os.getcwd()
Vous obtenez par exemple :
'C:/users/JLT/Documents'
(Ce ne sera sans doute pas celà pour vous, mais cette commande indique dans quel répertoire que vous travaillez en ce moment).
Je vous conseille, que vous soyez sous Windows ou non, d'utiliser le symbole / pour décrire un chemin.
Vous pouvez utiliser, en le doublant, l'antislash \\ mais, si vous oubliez de le doubler, vous aurez des erreurs. Je vous conseille donc d'utiliser le slash /, cela fonctionne très bien même sous Windows.
Quand vous lancez un programme Python directement, par exemple en faisant un double-clic dessus, le répertoire courant est celui d'où vous lancez le programme.
Par exemple, Si vous avez un fichier mon_programme.py
contenu sur le disqueC:/users/Bureau
, le répertoire de travail courant quand vous lancerez le programme sera C:/users/Bureau.
Chemins relatifs et absolus
Pour décrire l'arborescence d'un système, on a deux possibilités :
- les chemins absolus ;
- les chemins relatifs.
Le chemin absolu
Quand on décrit une cible (un fichier ou un répertoire) sous la forme d'un chemin absolu, on décrit la suite des répertoires menant au fichier. Sous Windows, on partira du nom de volume (C:\
,D:\
…). Sous les systèmes Unix, ce sera plus vraisemblablement depuis /.
Par exemple, sous Windows, si on a un fichier nomméfic.txt
, contenu dans un dossiertest
, lui-même présent sur le disqueC:
, le chemin absolu menant à notre fichier seraC:\test\fic.txt
.
Le chemin relatif
Quand on décrit la position d'un fichier grâce à un chemin relatif, cela veut dire que l'on tient compte du dossier dans lequel on se trouve actuellement. Ainsi, si on se trouve dans le dossierC:\test
et que l'on souhaite accéder au fichierfic.txt
contenu dans ce même dossier, le chemin relatif menant à ce fichier sera tout simplementfic.txt
.
Maintenant, si on se trouve dansC:
, notre chemin relatif sera test/fic.txt
.
Quand on décrit un chemin relatif, on utilise parfois le symbole..
qui désigne le répertoire parent. Voici un nouvel exemple :
C'est dans notre dossiertest
que tout se passe. Nous avons deux sous-répertoires nommésrep1
etrep2
. Dansrep1
, nous avons un seul fichier :fic1.txt
. Dansrep2
, nous avons deux fichiers :fic2.txt
etfic3.txt
.
Si le répertoire de travail courant estrep2
et que l'on souhaite accéder àfic1.txt
, notre chemin relatif sera donc..\rep1\fic1.txt
.
J'utilise ici des antislashs parce que l'exemple d'arborescence est un modèle Windows et que ce sont les séparateurs utilisés pour décrire une arborescence Windows. Mais, dans votre code je vous conseille quand même d'utiliser un slash(/)
.
Nous allons commencer à lire avant d'écrire dans un fichier. Pour l'exemple donc, je vous invite à créer :
1- Un répertoire Data dans D:/JUPYTER/lireEcrireFichier
2- un nouveau fichier dans ce répertoire. Je suis en manque flagrant d'inspiration, je vais donc l'appelerfichier.txt
. A l'aide d'un éditeur sans mise en forme (tel que le bloc-notes Windows, ou notepad++, mais veillez à enregistrer au format txt ) écrivons dans ce fichier :
C'est le contenu du fichier. Spectaculaire non ?