| @@ -1,6 +1,9 @@ | |||||
| % Programmation avec Python (chapitre 4) | % Programmation avec Python (chapitre 4) | ||||
| % Dimitri Merejkowsky | % Dimitri Merejkowsky | ||||
| # | |||||
| \center \huge Les tuples | \center \huge Les tuples | ||||
| # Création de tuples | # Création de tuples | ||||
| @@ -209,7 +212,7 @@ def exemple_bizarre(l=[1, 2, 3]): | |||||
| [1, 2, 3, 4, 4] | [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) | # 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 | # Itérer sur les clés | ||||
| @@ -376,7 +379,7 @@ signé Alice | |||||
| # Par mail - envoi 2 | # Par mail - envoi 2 | ||||
| ```text | ```text | ||||
| Bonjour Alice, voici une nouvelle version de mes changements | |||||
| Bonjour Alice, voici le code corrigé: | |||||
| def ma_fonction(): | def ma_fonction(): | ||||
| ma_liste = ... | ma_liste = ... | ||||
| @@ -390,11 +393,15 @@ def ma_fonction(): | |||||
| Croyez-le ou nom, plein de projets fonctionnent comme ça. | Croyez-le ou nom, plein de projets fonctionnent comme ça. | ||||
| Pas d'outil spécifiques, on peut tout faire avec des e-mail | 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 | # 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é | 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 | 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) | |||||