Les Fichiers avec Python

De knowledge
Révision datée du 31 octobre 2024 à 09:13 par Jpinon (discussion | contributions)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

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.

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.png
ATTENTION: Tout le fichier est mis en mémoire dans ce cas. Ca peut faire beaucoup même si Python gère le swap.

Il existe aussi un équivalent de writelines:

File = open(r"directory/file.txt","r")
lines=File.readlines()
print (lines)
File.close()

Dans ce cas lines contient une liste de lignes.

Ce sont des valeurs encadrées par des "[ ]" mais on appelle ça des liste pas des tableaux....

On obtient donc à l'écran la sortie standard d'un objet liste :

['Hello Paris \n', 'Hello London \n', 'Hello New-York \n', 'Hello Noumea\n']