Différences
Ci-dessous, les différences entre deux révisions de la page.
| python:bases:fichiers [2022/09/03 10:34] – [8. Enregistrer un objet dans un fichier] phil | python:bases:fichiers [2025/06/19 19:29] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 2: | Ligne 2: | ||
| ===== Python - Fichiers ===== | ===== Python - Fichiers ===== | ||
| - | [Mise à jour le : 16/5/2022] | + | [Mise à jour le : 25/11/2024] |
| * **Sources** | * **Sources** | ||
| Ligne 14: | Ligne 14: | ||
| * **Mots-clés** : itérateur, ouverture, lecture, écriture, fermeture, module pickle, context manager. | * **Mots-clés** : itérateur, ouverture, lecture, écriture, fermeture, module pickle, context manager. | ||
| - | <note important>Les mots ci-dessous sont dits " | + | <callout type=" |
| | and | continue | | and | continue | ||
| Ligne 28: | Ligne 28: | ||
| ---- | ---- | ||
| + | |||
| ==== 1. Généralités ==== | ==== 1. Généralités ==== | ||
| - | Un fichier est un **itérateur**. Il est donc **itérable** puisqu' | + | <callout type=" |
| + | |||
| + | \\ | ||
| ==== 2. Ouvrir un fichier ==== | ==== 2. Ouvrir un fichier ==== | ||
| - | <note>On utilise la fonction **open**() pour ouvrir un fichier. open renvoie un **objet fichier**.</ | + | <callout type=" |
| <code python *.py> | <code python *.py> | ||
| Ligne 46: | Ligne 50: | ||
| * l' | * l' | ||
| - | <note>Par défaut, les fichiers sont ouverts en mode texte. On peut ajouter **b** à **r**, **w** et **a** pour spécifier que le fichier est ouvert en mode **binaire**. On ne doit spécifier l' | + | <callout type=" |
| //Exemple// : ouverture d'un fichier **en lecture**. | //Exemple// : ouverture d'un fichier **en lecture**. | ||
| Ligne 65: | Ligne 69: | ||
| </ | </ | ||
| - | <note>Si un fichier **à ouvrir en écriture** n' | + | <callout type=" |
| + | |||
| + | \\ | ||
| ==== 3. Fermer un fichier ==== | ==== 3. Fermer un fichier ==== | ||
| - | <note warning>Un fichier ouvert doit être fermé après son utilisation pour qu'une autre application puisse y accéder. Pour cela, on **doit** utiliser la fonction **close()** ou ouvrir et fermer le fichier avec **with** (cette dernière méthode est à privilégier voir plus loin).</note> | + | <callout icon=" |
| //Exemple// | //Exemple// | ||
| Ligne 74: | Ligne 81: | ||
| f.close() | f.close() | ||
| </ | </ | ||
| + | |||
| + | \\ | ||
| ==== 4. Ouvrir et fermer automatiquement un fichier avec with ==== | ==== 4. Ouvrir et fermer automatiquement un fichier avec with ==== | ||
| - | + | <callout type="tip" icon=" | |
| - | <note tip> | + | |
| //Exemple// | //Exemple// | ||
| Ligne 85: | Ligne 93: | ||
| pass | pass | ||
| </ | </ | ||
| + | |||
| + | \\ | ||
| ==== 5. Ecrire dans un fichier ==== | ==== 5. Ecrire dans un fichier ==== | ||
| - | <note>On utilise la méthode **write** en lui passant en paramètre la chaîne à écrire dans le fichier. Elle renvoie le nombre de caractères qui ont été écrits.</ | + | <callout type=" |
| <code python *.py> | <code python *.py> | ||
| Ligne 110: | Ligne 120: | ||
| </ | </ | ||
| - | <note warning>La méthode **write** accepte uniquement des chaînes de caractères. Il faudra donc convertir les autres types en chaîne avant de les écrire dans un fichier texte.</note> | + | <callout icon=" |
| - | ==== 6. Lire le contenu d'un fichier ==== | + | \\ |
| + | ==== 6. Lire le contenu d'un fichier ==== | ||
| === 6.1 Lire l' | === 6.1 Lire l' | ||
| - | <note>On utilise la méthode **read**() de la classe **TexteIoWrapper** pour lire l' | + | <callout type=" |
| // Exemple 1a // : ouverture avec **with**, on ne gère pas l' | // Exemple 1a // : ouverture avec **with**, on ne gère pas l' | ||
| Ligne 167: | Ligne 178: | ||
| - | <note>Après ouverture et transfert de son contenu dans une variable de type str, le contenu du fichier peut être traité avec les méthodes de la classe string. Voir " | + | <callout type=" |
| - | === 6.2 Lecture du fichier ligne par ligne === | + | === 6.2 Lire un fichier ligne par ligne === |
| - | <note> | + | <callout type=" |
| > **\n** n’est omis que sur la dernière ligne du fichier. Si f.readline() renvoie une chaîne vide, c’est que la fin du fichier a été atteinte, alors qu’une ligne vide est représentée par ' | > **\n** n’est omis que sur la dernière ligne du fichier. Si f.readline() renvoie une chaîne vide, c’est que la fin du fichier a été atteinte, alors qu’une ligne vide est représentée par ' | ||
| Ligne 184: | Ligne 195: | ||
| </ | </ | ||
| - | <note tip>Les fichiers étant des **itérateurs**, | + | <callout type="tip" icon=" |
| //Exemple// | //Exemple// | ||
| Ligne 201: | Ligne 212: | ||
| > Troisième ligne | > Troisième ligne | ||
| - | <note tip>Pour construire une **liste** avec toutes les lignes d’un fichier, il est aussi possible d’utiliser // | + | <callout type="tip" icon=" |
| + | \\ | ||
| ====7. Fichier binaire ==== | ====7. Fichier binaire ==== | ||
| A faire | A faire | ||
| + | |||
| + | \\ | ||
| + | |||
| ==== 8. Enregistrer un objet dans un fichier ==== | ==== 8. Enregistrer un objet dans un fichier ==== | ||
| * **Problème** | * **Problème** | ||
| Ligne 303: | Ligne 318: | ||
| - **tuple**, qui se fait encoder comme une liste ; \\ | - **tuple**, qui se fait encoder comme une liste ; \\ | ||
| - **complex**, | - **complex**, | ||
| + | |||
| + | \\ | ||
| + | |||
| ==== 9. Les built-in repr() et flush() ==== | ==== 9. Les built-in repr() et flush() ==== | ||
| Ligne 337: | Ligne 355: | ||
| Il y a des cas où ce comportement peut s' | Il y a des cas où ce comportement peut s' | ||
| + | |||
| + | \\ | ||
| ====10. Utilitaires ==== | ====10. Utilitaires ==== | ||