Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
python:bases:fichiers [2022/05/16 21:48] – [Pour aller plus loin ...] phil | python:bases:fichiers [2022/09/03 10:40] (Version actuelle) – [Python - Fichiers] phil | ||
---|---|---|---|
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' | Un fichier est un **itérateur**. Il est donc **itérable** puisqu' | ||
+ | |||
==== 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 48: | ||
* 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 67: | ||
</ | </ | ||
- | <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 77: | Ligne 80: | ||
==== 4. Ouvrir et fermer automatiquement un fichier avec with ==== | ==== 4. Ouvrir et fermer automatiquement un fichier avec with ==== | ||
- | <note tip> | + | <callout type="tip" icon=" |
//Exemple// | //Exemple// | ||
Ligne 87: | Ligne 90: | ||
==== 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 113: | ||
</ | </ | ||
- | <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 170: | ||
- | <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 Lecture du 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 187: | ||
</ | </ | ||
- | <note tip>Les fichiers étant des **itérateurs**, | + | <callout type="tip" icon=" |
//Exemple// | //Exemple// | ||
Ligne 201: | Ligne 204: | ||
> 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 299: | Ligne 303: | ||
</ | </ | ||
- | <note warning> | + | <callout icon=" |
car ils ne sont pas natifs en JavaScript), | car ils ne sont pas natifs en JavaScript), | ||
- **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() ==== | ||