3/7/2025
Chap2: Fichiers Binaires
Module: PROGRAMMATION PYTHON AVANCÉE
Session : S2 2024/25
Filière : CI IACS
Réalisé par Prof :
Khalid OUNACHAD
[Link]@[Link]
ENSABM, USMS Béni Mellal
@ENSABM_ Séance du : 20/02/2025
Chap2: Fichiers binaires
Module: Réseaux & Cloud Computing
Elément Module: Réseaux
Filière : TDI (S2) 2023/24
Réalisé par Prof :
Khalid OUNACHAD
ENSABM, USMS Béni Mellal
@ENSABM_ Séance du : 20/02/2025
1
3/7/2025
Plan:
I. Introduction
II. Pickle
III. struct
IV. Autres bibliothèques et exemples
@ENSABM_ 07/03/2025
3
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Introduction
Un fichier stocke des informations sur un support physique (disque dur, clé USB, carte
mémoire SD...).
Ouvrir un fichier consiste à le charger dans la mémoire vive (RAM).
Enregistrer un fichier consiste à l'écrire sur un support physique de stockage (l'information
est alors conservée de manière permanente).
@ENSABM_ 07/03/2025
4
2
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Types fichiers
Les fichiers textes : l'information est stockée sous forme de caractères lisibles par un éditeur
de texte. Ceux ci sont lisibles. Autrement dit, ils contiennent du texte (lettres, ponctuations,
nombres, ...). Leur contenu est souvent divisé en lignes.
Les fichiers binaires : l'information est stockée en binaire (une suite d'octets dont la valeur
est comprise entre 0x00 et 0xFF). Ceux-ci ne contiennent pas (exclusivement) du texte et ils
ne peuvent être convenablement traités que par des logiciels spécialisés. Un fichier PDF, une
image JPEG ou un mp3 sont quelques exemples de fichiers binaires.
@ENSABM_ 07/03/2025
5
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Fichiers et python
Deux approches des fichiers dans python:
1- Python comme outil de manipulation de fichiers(OS, shutil)
2- les fichiers pour conserver des données Python (fichiers de données: texte/binaire)
@ENSABM_ 07/03/2025
6
3
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Module os
Le module os : manipulation de fichiers (et de répertoires), il permet de:
1) parcourir
2) renommer
3) création/destruction de répertoires
Pas de copie de fichiers dans os
@ENSABM_ 07/03/2025
7
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Module os (2)
getcwd() : fournit le répertoire courant
chdir(nomrep) : se place dans le répertoire nomrep
rename(src,dest) : renomme src en dest
remove(chemin), rmdir(chemin) : supprime chemin
mkdir(chemin) : crée le répertoire chemin
listdir(chemin) : liste des fichiers/rep de chemin
system(commande) : exécute la commande commande
Exemples : >>>rename(’[Link]’,’[Link]’)
>>>mkdir(’u:\\monRep\\python\\tp2’)
@ENSABM_ 07/03/2025
8
4
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Module shutil
Ce module fournit des fonctions de copie :
copy(src,dest) : copie complète du fichier (y compris les droits)
copyfile(src,dest) : copie du fichier sans les droits
@ENSABM_ 07/03/2025
9
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Manipuler un fichier
Pour manipuler le contenu de fichier il faut définir des fichiers logiques (ou objets fichier).
Deux fonctions centrales :
• open(nom,mode,…) : ouvre le fichier nom avec le mode mode
• [Link]() : ferme l’objet fichier obFic
Exemple :
ficLog=open(’[Link]’,’rb’) # Ouvre ficLog
[Link]() # Ferme ficLog
@ENSABM_ 07/03/2025
10
5
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Ouvrir ou créer un fichier
On utilise la fonction open(chemin, mode,…).
Cette fonction prend en premier paramètre le chemin du fichier (relatif ou absolu) et en
second paramètre le type d'ouverture(l’ouvrir pour quoi faire!)
Chemin : types
• Un chemin relatif en informatique est un chemin qui prend en compte
l'emplacement de lecture.
• Un chemin absolu est un chemin complet qui peut être lu quelque soit
l'emplacement de lecture.
Remarque: Ouvrir un fichier en mode écrire qui n’existe pas permet de le créer.
@ENSABM_ 07/03/2025
11
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Ouvrir un fichier binaire: Mode
Les modes d'ouverture :r :(READ). w:(WRITE), a: (APPEND).
Mode Description
'rb' Lecture seule en binaire
'wb' Écriture seule en binaire (écrase le contenu)
'ab' Ajout en binaire (ajoute à la fin du fichier)
'xb' Création exclusive en binaire (Erreur si le fichier existe)
'rb+' Lecture & écriture en binaire
'wb+' Lecture & écriture en binaire (écrase le contenu)
'ab+' Lecture & ajout en binaire (ajoute à la fin)
@ENSABM_ 07/03/2025
12
6
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Mode dans open(…): Différences entre r+, w+ et a+
Les modes permettent de lire et d’écrire dans des fichiers binaires, mais avec les différences
suivantes:
Mode Lecture Écriture Effacement du fichier Ajout en fin de fichier
'rb+' Oui Oui Non Non
'wb+' Oui Oui Oui (efface tout) Non
Oui (ajoute toujours à
'ab+' Oui Oui Non
la fin)
@ENSABM_ 07/03/2025
13
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Fermer un fichier
Comme tout élément ouvert, il faut le refermer une fois les instructions terminées. Pour cela
on utilise la méthode "close()".
Exemple:
>>> [Link]()
f: désigne le nom du fichier logique dans le code du programme
@ENSABM_ 07/03/2025
14
7
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Ouvrir un fichier binaire: exemple
Ou bien:
@ENSABM_ 07/03/2025
15
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Lire séquentiellement le contenu d’un fichier
On doit avoir le mode ‘rb’ en ouverture dans le cas d’un fichier binaire f:
Pour afficher tout le contenu du fichier f, on peut utiliser une de ces méthodes:
• [Link]() : fournit la totalité de f sous forme de bytes.
• [Link](n) : fournit n bytes de f à partir de la position courante.
• [Link]() : fournit une ligne de f sous forme de bytes.
• [Link]() : fournit la totalité de f sous forme d’une liste de bytes.
@ENSABM_ 07/03/2025
16
8
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Lire séquentiellement le contenu d’un fichier
Exemple:
Sortie:
@ENSABM_ 07/03/2025
17
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Lire un fichier binaire octet par octet
Exemple:
@ENSABM_ 07/03/2025
18
9
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Lire un fichier binaire par blocs (chunking)
Exemple:
@ENSABM_ 07/03/2025
19
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Ajouter des données à un fichier binaire
Exemple:
@ENSABM_ 07/03/2025
20
10
3/7/2025
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Modifier un fichier binaire: bytearray
Un bytearray est une version mutable d'un objet bytes.
Il permet de modifier des données binaires directement en mémoire.
Exemple:
@ENSABM_ 07/03/2025
21
I- Introduction - Introduction
II- Pickle
III- struct
IV- Autres bibliothèques et exemples
Accès direct à un fichier binaire: seek()
Syntaxe: seek(offset, whence)
offset : le nombre d’octets à déplacer.
whence (optionnel) :
• 0 (SEEK_SET) : Positionnement au début (défaut).
• 1 (SEEK_CUR) : Positionnement à la position actuelle.
• 2 (SEEK_END) : Positionnement à la fin du fichier.
@ENSABM_ 07/03/2025
22
11