La méthode seek() pour la manipulation des fichiers en Python

Ce tutoriel explique en détail l'utilisation de la méthode seek() pour naviguer dans un fichier, un concept fondamental pour la lecture et l'écriture non séquentielle.

1. Introduction à la méthode seek()

La méthode seek(offset, whence) permet de déplacer la position courante de lecture/écriture dans un fichier ouvert. Elle modifie le "pointeur de fichier".

  • offset : Nombre de bytes à déplacer.
  • whence (optionnel, défaut=0) : Point de référence pour le déplacement.
    • 0 (os.SEEK_SET) : Début du fichier.
    • 1 (os.SEEK_CUR) : Position actuelle.
    • 2 (os.SEEK_END) : Fin du fichier.

2. Syntaxe de base

3. Navigation depuis le début du fichier (whence=0)

Exemple de lecture à des positions spécifiques.

4. Navigation depuis la position actuelle (whence=1)

Déplacement relatif à la position courante du pointeur.

5. Navigation depuis la fin du fichier (whence=2)

Utile pour lire des données à partir de la fin.

6. Différence entre mode texte et mode binaire

Attention : En mode texte ('r', 'w', 'a'), seek() est limité aux offsets retournés par tell() ou 0. Les offsets relatifs à la fin (SEEK_END) ne sont pas toujours autorisés.

7. Cas pratique : Lecture d'un en-tête puis du corps

Exemple réaliste de lecture d'un fichier avec une structure connue.

8. Cas pratique : Modification ciblée dans un fichier

Remplacer un segment spécifique dans un fichier binaire.

9. Méthodes associées : tell() et truncate()

10. Pièges courants et bonnes pratiques

11. Exercice final : Lecture inversée

Lire un fichier à l'envers en utilisant seek().

12. Résumé des points clés

  • seek() contrôle la position du pointeur dans le fichier.
  • En mode binaire ('rb', 'wb+', etc.), tous les déplacements sont autorisés.
  • En mode texte, les offsets doivent être des valeurs retournées par tell() ou 0.
  • whence détermine le point de référence (début, position actuelle, fin).
  • Toujours utiliser tell() pour déboguer la position.
  • Pour des manipulations complexes, privilégier le mode binaire.




 

 

Younes Derfoufi
CRMEF OUJDA

Leave a Reply

Your email address will not be published. Required fields are marked *