|
|
|
@@ -440,75 +440,3 @@ Il utilisait d'autres outils, bien sûr, mais ce qu'on va faire n'est pas si loi |
|
|
|
# |
|
|
|
|
|
|
|
# |
|
|
|
|
|
|
|
|
|
|
|
\center \huge Lire et écrire des fichiers |
|
|
|
|
|
|
|
# Rappel: lire |
|
|
|
|
|
|
|
```python |
|
|
|
file = open("toto.txt", "r") # 'r' comme 'read' |
|
|
|
contenu = file.read() |
|
|
|
file.close() |
|
|
|
``` |
|
|
|
|
|
|
|
Note: le fichier `toto.txt` doit exister! |
|
|
|
|
|
|
|
# Écrire |
|
|
|
|
|
|
|
On peut écrire tout le contenu d'un coup: |
|
|
|
|
|
|
|
```python |
|
|
|
contenu = "du texte à sauvegarder" |
|
|
|
file = open("article.txt", "w") # 'w' comme 'write' |
|
|
|
file.write(contenu) |
|
|
|
file.close() |
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
* Le fichier `article.txt` sera écrasé s'il existe déjà. |
|
|
|
* N'oubliez surtout pas d'appeler `close()` |
|
|
|
|
|
|
|
# Que faire en cas d'erreur ? |
|
|
|
|
|
|
|
```python |
|
|
|
file = open("article.txt", "w") # 'w' comme 'write' |
|
|
|
# ... beacoup de code ici |
|
|
|
# ... < une erreur |
|
|
|
file.close() |
|
|
|
``` |
|
|
|
|
|
|
|
S'il y a une erreur entre `open()` et `close()`, le fichier ne sera pas fermé! |
|
|
|
|
|
|
|
|
|
|
|
# Le mot-clé with |
|
|
|
|
|
|
|
```python |
|
|
|
with open("toto.txt", "w") as file: |
|
|
|
file.write("du texte") |
|
|
|
``` |
|
|
|
|
|
|
|
Quand on sort du bloc `with` on a la garantie que `file.close()` sera appelé, |
|
|
|
*même* si on sort du bloc à cause d'une erreur. |
|
|
|
|
|
|
|
# Convention |
|
|
|
|
|
|
|
Il n'y a maintenant plus aucune raison d'appeler `.close()` "à la main", |
|
|
|
donc ne le faites pas ... |
|
|
|
|
|
|
|
# Lire et écrire des lignes |
|
|
|
|
|
|
|
Très courant: |
|
|
|
|
|
|
|
```python |
|
|
|
with open("toto.txt", "r") as file: |
|
|
|
lignes = file.readlines() |
|
|
|
|
|
|
|
# faire quelque chose avec la liste de lignes |
|
|
|
|
|
|
|
with open("toto.txt", "w") as file: |
|
|
|
file.writelines(lignes) |
|
|
|
``` |
|
|
|
|
|
|
|
Pensez à fermer le premier fichier avant d'ouvrir le second. |
|
|
|
(ça marche même s'ils ont le même nom) |