| @@ -1,6 +1,9 @@ | |||
| % Programmation avec Python (chapitre 4) | |||
| % Dimitri Merejkowsky | |||
| # | |||
| \center \huge Les tuples | |||
| # Création de tuples | |||
| @@ -209,7 +212,7 @@ def exemple_bizarre(l=[1, 2, 3]): | |||
| [1, 2, 3, 4, 4] | |||
| ``` | |||
| * Les arguments par défaut ne sont évalué qu'une seule fois) | |||
| * Les arguments par défaut ne sont évalué qu'une seule fois | |||
| # Valeur par défaut (2) | |||
| @@ -253,7 +256,7 @@ mutables. | |||
| # | |||
| \center Itérer sur les dictionnaires | |||
| \center \huge Itérer sur les dictionnaires | |||
| # Itérer sur les clés | |||
| @@ -376,7 +379,7 @@ signé Alice | |||
| # Par mail - envoi 2 | |||
| ```text | |||
| Bonjour Alice, voici une nouvelle version de mes changements | |||
| Bonjour Alice, voici le code corrigé: | |||
| def ma_fonction(): | |||
| ma_liste = ... | |||
| @@ -390,11 +393,15 @@ def ma_fonction(): | |||
| Croyez-le ou nom, plein de projets fonctionnent comme ça. | |||
| Pas d'outil spécifiques, on peut tout faire avec des e-mail | |||
| et du texte brut | |||
| et du texte brut. | |||
| Et c'est souvent comme ça qu'on contribue à du code open-source. | |||
| # D'autres outils | |||
| Des outils essayent de "simplifier" le processus. En vrac: `gerrit`, `github`, `gitlab` ... | |||
| Des outils essayent de "simplifier" le processus. En vrac: `gerrit`, `github`, `gitlab`, `bitbucket`, `phabricator` ... | |||
| \vfill | |||
| Mais dans son essence le concept n'a pas changé | |||
| @@ -426,6 +433,82 @@ Vous pouvez lire *Les Mots du Président* si ça vous dit. | |||
| Il utilisait d'autres outils, bien sûr, mais ce qu'on va faire n'est pas si loin | |||
| # Squelette du code | |||
| # | |||
| \center \huge Let's go! | |||
| # | |||
| # | |||
| \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) | |||
| ``` | |||
| Parlons-en! | |||
| Pensez à fermer le premier fichier avant d'ouvrir le second. | |||
| (ça marche même s'ils ont le même nom) | |||