diff --git a/src/cours/CIEL1/01-bases-python/cours/python-bases-5-fichiers.md b/src/cours/CIEL1/01-bases-python/cours/python-bases-5-fichiers.md index c7b8926..89608b6 100644 --- a/src/cours/CIEL1/01-bases-python/cours/python-bases-5-fichiers.md +++ b/src/cours/CIEL1/01-bases-python/cours/python-bases-5-fichiers.md @@ -19,10 +19,11 @@ fichier = open('nom_du_fichier.txt', 'mode', encoding='utf-8') Le mode d'ouverture permet de savoir quelles actions vous souhaitez (et pourrez) faire avec votre fichier. -- `'r'` : lecture (read) -- `'w'` : écriture (write) - écrase le contenu existant -- `'a'` : ajout (append) - ajoute à la fin du fichier -- `'x'` : création uniquement (erreur si le fichier existe) +- `'r'` : lecture seule (**r**ead only) : on démarre au début du fichier, erreur si le fichier n'existe pas +- `'w'` : écriture (**w**rite) : on démarre au début du fichier, écrase le contenu, crée le fichier au besoin +- `'a'` : ajout (**a**ppend) : on démarre à la fin du fichier, crée le fichier si besoin +- `'x'` : création uniquement (e**x**clusive) : échoue si le fichier existe déjà +- les versions `+` (ex.: `'r+'`, `'w+'`, `'a+'`, `'x+'`) ajoutent la possibilité de lire et écrire simultanément dans le fichier. ```admonish example title="Exemple" ~~~python @@ -30,6 +31,19 @@ fichier = open('exemple.txt', 'r', encoding='utf-8') ~~~ ``` +#### Mode binaire + +Les modes listés au dessus ouvrent les fichiers par défaut en **mode texte**. Dans ce cas, Python interprète les données comme des chaînes de caractères (`str`) et gère la conversion d'encodage (par exemple, `utf-8`). + +Pour manipuler des **données brutes** (images, fichiers audio, etc.), il faut utiliser le **mode binaire** en ajoutant le caractère `'b'` : + +- `'rb'` : lecture binaire +- `'wb'` : écriture binaire +- `'ab'` : ajout binaire +- combiné avec `+` pour lecture/écriture binaire, comme `'rb+'`, `'wb+'`, `'ab+'` + +En mode binaire, Python lit et écrit des objets de type `bytes` et ne fait aucune conversion d’encodage ni adaptation de fin de ligne : les octets lus et écrits sont strictement identiques à ceux stockés sur le disque. + ## Fermer un fichier diff --git a/src/cours/CIEL1/01-bases-python/tp/TP_MDP04_fichiers.md b/src/cours/CIEL1/01-bases-python/tp/TP_MDP04_fichiers.md index 9db0194..916a1b3 100644 --- a/src/cours/CIEL1/01-bases-python/tp/TP_MDP04_fichiers.md +++ b/src/cours/CIEL1/01-bases-python/tp/TP_MDP04_fichiers.md @@ -26,6 +26,10 @@ Le tout dans un répertoire avec le nom suivant `YYYY-MM-DD_TPX_NOM1_Prenom1_NOM ### Résultats attendus - [ ] Le programme se lance sans erreur. +- [ ] La fonction `get_word_list_from_file` retourne une liste de mots tirée du fichier `wordlist_fr.txt` +- [ ] La fonction `write_password_in_file` écrit le mot de passe généré à la fin d'un fichier sans écraser son contenu précédent +- [ ] La fonction `tirer_les_des` tire cinq valeurs aléatoires entre 1 et 6 et les concatène dans une chaîne de caractères qu'elle retourne +- [ ] La fonction `generer_dice_passphrase` génère une passphrase aléatoire à l'aide d'un tirage de dés et la retourne - [ ] Chaque fonction contient une docstring minimale expliquant sa fonctionnalité. Bonus : Doctsrings complètes au format Numpy. - [ ] Le code est propre, correctement formaté, les variables, fonctions et paramètres sont bien nommés, les conventions sont respectées. diff --git a/src/cours/SUMMARY.md b/src/cours/SUMMARY.md index 88b718f..5d6abfc 100644 --- a/src/cours/SUMMARY.md +++ b/src/cours/SUMMARY.md @@ -35,6 +35,7 @@ - [TP1 - Bases de Python](./CIEL2/01-revisions-python/tp/tp1_bases.md) - [TP1b - Mise en pratique](./CIEL2/01-revisions-python/tp/tp1bis_mise_en_pratique.md) - [TP2 - Fonctions](./CIEL2/01-revisions-python/tp/tp2-fonctions.md) + - [TP3 - Fichiers et structures de données](./CIEL2/01-revisions-python/tp/tp3-fichiers-structures-de-données.md) - [TP Git](./CIEL2/04-git/tp.md) - [Python objet](./CIEL2/02-python-objet/python-objet.md) - [Bases de données](./CIEL2/03-base-de-donnees/bases-de-donnees.md)