Les Fichiers avec Python
Utiliser des fichiers avec python suit la même philosophie que les autres langages mais une syntaxe particulière. (surtout les modes de création qui diffèrent de ce qui se fait sous perl et en C)
Modules utilisés
Il n'y en a pas par défaut. Python sait nativement gérer les fichiers disque.
Modèle mémoire
Comment est-ce que les fichiers sont gérés en mémoire par python?
Il existe deux types de mémoire dans un ordinateur, à savoir la mémoire RAM et la mémoire de masse. Chaque fichier que vous avez enregistré ou que toute personne a enregistré se trouve dans la mémoire de masse car toutes les données de la RAM sont perdues lorsque l'ordinateur est éteint.
Ainsi, lorsque vous devez modifier un fichier texte ou simplement travailler avec lui en python, vous devez charger ce fichier dans la mémoire RAM. Python interagit avec les fichiers chargés dans la mémoire RAM ou la mémoire de masse via des « gestionnaires de fichiers » (c'est ainsi que votre système d'exploitation donne accès à Python pour interagir avec le fichier que vous avez ouvert en recherchant le fichier dans sa mémoire s'il le trouve, il renvoie un gestionnaire de fichiers, puis vous pouvez travailler avec le fichier ).
Opérations de base
Ouverture
Pour ouvrir un fichier avec python c'est simple on doit fournir son nom et le mode dans lequel on va l'ouvrir:
- Read Only "r" : dans ce mode on le pourra que lire le contenu du fichier. Le "handle" de fichier sera positionné au début.
- Read Write "r+" : Le fichier est ouvert en lecture écriture. Le "handle" de fichier sera toujours positionné au début.
- Write Only "w" : Ouvre un fichier en écriture. Si le fichier existe in est tronqué et son "handle" est toujours positionné au début d'un fichier vide. Si il n'existe pas il sera crée. (dans pas mal de langages cela corresponds à un "create" du "C")
- Write & Read "w+" : Ouvre un fichier comme en mode "w" mais permet également la lecture. Le "Handle" est toujours au début d'un fichier vide.
- Append only "a" : C'est la même chose que le "w" mais, si il existe, le fichier est préservé et le "handle" est positionné à la fin du fichier.
- Append & Read "a+" : Comme le mode "a" mais avec la possibilité de lire.
File = open(r"directory/file.txt","w")
Pour info le "r" devant le nom du fichier dit à python de ne pas interpréter les "/" comme des caractères d'échappement mais comme des "/" normaux. Le "r" veut dire "raw" dans ce cas. Ou c'est sujet à confusion avec le "r" qui donne le mode read
Le "/" doit être utilisé sous Linus, MAC mais aussi Windows. Le "\" serait anbigu.
Fermeture
On firme un fichier avec.... close.
File.close()
Oui File est un objet.
Ecriture
On utilisera la fonction write. Cette fonction n'ajoute pas de saut de ligne à la fin.
File = open(r"directory/file.txt","w")
File.write("Hello World\n")
File.close()
Crée un fichier contenant une ligne. La fonction writelines peut être aussi utilisée. Son argument est une liste de lignes.
L = ["Hello Paris \n","Hello London \n","Hello New-York \n"]
File = open(r"directory/file.txt","w")
File.writelines(L)
File.close()
Va créer un fichier disque contenant :
Hello Paris
Hello London
Hello New-York
Si on veut ajouter une ligne à la fin:
File = open(r"directory/file.txt","a")
File.write("Hello Noumea\n")
File.close()
Ajoute "Hello Noumea" au fichier qui existe déja.
Lecture
On peut lire le fichier octet par octet
File = open(r"directory/file.txt","r")
b=File.read(1)
print (p)
b=File.read(1)
print (p)
File.close()
On ouvre le fichier crée au paragraphe précédent et on affiche les deux premières lettres : "H" et "e" puisque le fichier commence par "Hello..." On peut lire tout le fichier en vrac en ne précisant pas de taille:
File = open(r"directory/file.txt","r")
vrac=File.read()
print (vrac)
File.close()
Qui imprimera :
Hello Paris
Hello London
Hello New-York
Hello Noumea
ATTENTION: Tout le fichier est mis en mémoire dans ce cas. Ca peut faire beaucoup même si Python gère le swap. |