98 Python Et Raspberry PI
98 Python Et Raspberry PI
Python
ordinateur Raspberry Pi. Il s’adresse à toute personne désireuse d’ap- Expert en systèmes d’information et
prendre ce langage de façon ludique et ne nécessite pas de connais-
Python et Raspberry Pi
passionné de logiciels libres, Patrice
sances particulières en développement ou en électronique. Toutefois,
CLEMENT est développeur et membre
des connaissances d’un environnement Linux/Unix sont souhaitables
actif de la communauté Gentoo depuis
pour tirer le meilleur profit du livre.
8 ans. Après plusieurs expériences
Le chapitre 1 explique les quelques bases à connaître afin de gérer cor- dans diverses entreprises à l’internatio-
rectement le Raspberry Pi et y installer des modules Python. Les cha- nal et en France, il décide de trans-
pitres 2 et 3 constituent une introduction à Python, des fonctions de
et Raspberry Pi
mettre son expertise du langage Python
base jusqu’à quelques subtilités du langage. Le chapitre 4 couvre l’écri- et sa curiosité pour la plateforme em-
ture de tests unitaires tandis que le chapitre 5 explique comment utiliser barquée Raspberry Pi à travers la ré-
le langage pour écrire des scripts d’administration système. daction de ce livre.
Les chapitres qui suivent sont beaucoup plus orientés « pratique ». Le
chapitre 6 constitue une introduction à la programmation console avec
la bibliothèque curses tandis que le chapitre 7 se concentre sur la pro-
grammation d’interfaces graphiques en se basant sur la bibliothèque Les chapitres du livre
tkinter. Le chapitre 8 présente les aspects multimédia et audio du
Raspberry Pi ; notamment comment dessiner avec Pillow ou comment
manipuler l’audio avec pyalsaaudio. Puis, le chapitre 9 détaille les mo-
dules nécessaires au développement web sur le Raspberry Pi tandis que
Avant-propos • L’environnement de
programmation • Introduction à Py-
thon • Concepts avancés du langage
Apprenez à développer
sur votre nano-ordinateur
le chapitre 10 explique au lecteur la persistance de données. Python • Documenter et tester ses
Enfin, le chapitre 11 guide le lecteur dans la découverte et le fonctionne- scripts en Python • Administration du
ment des broches GPIO du Raspberry Pi. À l’aide de schémas et de Raspberry Pi en Python • Le Raspberry
photos, l’auteur guide le lecteur dans le raccordement d’un écran LCD Pi en console avec curses • Program-
16x2 (non fourni avec le livre) avec le Raspberry Pi. mation d’interfaces graphiques avec
Pour la rédaction du livre, l’auteur a utilisé le Raspberry Pi 1 modèle B tkinter • Multimédia et audio sur le
révision 2. Toutefois, l’utilisation d’une autre version n’a aucune inci- Raspberry Pi • À l’assaut du Web avec
dence sur les informations et exemples fournis tout au long des cha- le Raspberry Pi • Persistance de don-
pitres à l’exception du chapitre 11, les broches du GPIO évoluant à nées sur le Raspberry Pi • Raspberry Pi
chaque nouvelle itération du Raspberry Pi. et GPIO
Téléchargement
www.editions-eni.fr
.fr
Des éléments complémentaires sont en téléchargement sur le site
www.editions-eni.fr.
Pour plus
ISBN : 978-2-409-00332-5
Patrice CLEMENT
Table des matières 1
Avant-propos
Chapitre 1
Environnement de programmation
1. Caractéristiques du Raspberry Pi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2. Démarrage de Raspbian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3. Comprendre l’écosystème Python : quelle version utiliser ? . . . . . . . 16
4. Installer des bibliothèques Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.1 Avec aptitude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.2 Avec pip. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.3 pip ou aptitude ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5. IDLE : l'éditeur de code en Python pour Python . . . . . . . . . . . . . . . . 23
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Chapitre 2
Introduction à Python
1. Hello World. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2. Les types de base : int, float, str et bool . . . . . . . . . . . . . . . . . . . . . . . 30
2.1 Les entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2 Les flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4 Les booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2 Python et Raspberry Pi
Apprenez à développer sur votre nano-ordinateur
Chapitre 3
Concepts avancés du langage Python
1. Les classes : définition avec le mot-clé class . . . . . . . . . . . . . . . . . . . . 53
1.1 Premiers pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.2 Exposer les attributs d'une classe. . . . . . . . . . . . . . . . . . . . . . . . . 55
1.3 Découpler une classe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1.4 Réutiliser du code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
2. Les fonctions : les mots-clés def et lambda . . . . . . . . . . . . . . . . . . . . . 60
2.1 Définir une fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2.2 La fonction anonyme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3. La syntaxe en compréhension . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
4. Itérateur et générateur : les mots-clés iter et yield . . . . . . . . . . . . . . . 69
Table des matières 3
Chapitre 4
Documenter et tester ses scripts en Python
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
2. Consulter de la documentation avec pydoc3 . . . . . . . . . . . . . . . . . . . 90
3. Documenter et tester son code en une seule fois
avec le module doctest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
4. Écriture de tests unitaires avec le module unittest. . . . . . . . . . . . . . 104
5. Benchmarker son code avec le module timeit. . . . . . . . . . . . . . . . . . 109
6. Déboguer ses programmes avec le module pdb . . . . . . . . . . . . . . . . 114
6.1 Déboguer pas à pas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.2 Déboguer à un endroit précis du programme . . . . . . . . . . . . . . 119
6.3 Procéder à l'autopsie de son programme . . . . . . . . . . . . . . . . . . 120
7. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Chapitre 5
Administration du Raspberry Pi en Python
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
2. Gérer le système avec les modules pwd et os . . . . . . . . . . . . . . . . . . 124
2.1 Manipuler et interroger le système de fichiers . . . . . . . . . . . . . 128
2.2 Explorer le système de fichiers du Raspberry Pi . . . . . . . . . . . . 129
3. Interagir avec l'interpréteur Python via le module sys . . . . . . . . . . . 134
4 Python et Raspberry Pi
Apprenez à développer sur votre nano-ordinateur
Chapitre 6
Le Raspberry Pi en console avec curses
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
2. Les fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
3. Projet #1 : un menu interactif. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
4. Projet #2 : une calculatrice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
5. Projet #3 : le jeu du serpent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
Chapitre 7
Programmation d’interfaces graphiques avec tkinter
1. Les fondamentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
2. Projet #1 : Hello world avec tkinter . . . . . . . . . . . . . . . . . . . . . . . . . 184
3. Projet #2 : une visionneuse d'images . . . . . . . . . . . . . . . . . . . . . . . . 192
4. Projet #3 : un éditeur de texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Table des matières 5
Chapitre 8
Multimédia et audio sur le Raspberry Pi
1. Dessiner avec Pillow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
1.1 Créer et manipuler des images. . . . . . . . . . . . . . . . . . . . . . . . . . 215
1.2 Dessiner des figures géométriques. . . . . . . . . . . . . . . . . . . . . . . 221
2. Contrôler les entrées et sorties audio avec pyalsaaudio . . . . . . . . . . 223
3. Projet #1 : un enregistreur/lecteur audio . . . . . . . . . . . . . . . . . . . . . 231
4. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Chapitre 9
À l'assaut du Web avec le Raspberry Pi
1. Webscraping facile avec les modules urllib et HTMLParser . . . . . . 239
2. Développer un serveur HTTP avec le module http.server . . . . . . . . 246
3. Exécuter des scripts avec le module cgi . . . . . . . . . . . . . . . . . . . . . . . 253
4. Envoyer des e-mails avec le module smtplib. . . . . . . . . . . . . . . . . . . 263
5. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Chapitre 10
Persistance de données sur le Raspberry Pi
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
2. Sérialisation et désérialisation avec les modules pickle et shelve . . 267
3. Traiter des fichiers CSV avec le module csv . . . . . . . . . . . . . . . . . . . 272
3.1 Création et lecture d’un fichier CSV . . . . . . . . . . . . . . . . . . . . . 272
3.2 Créer son propre dialecte CSV . . . . . . . . . . . . . . . . . . . . . . . . . . 274
4. Manipuler des données XML
avec le module xml.etree.ElementTree . . . . . . . . . . . . . . . . . . . . . . . 276
4.1 Créer et sérialiser un fichier XML . . . . . . . . . . . . . . . . . . . . . . . 276
4.2 Interroger un fichier XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
4.3 Ajouter et supprimer des nœuds . . . . . . . . . . . . . . . . . . . . . . . . 279
6 Python et Raspberry Pi
Apprenez à développer sur votre nano-ordinateur
5. Gestion d’une base de données SQL légère avec le module sqlite3 . 282
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
Chapitre 11
Raspberry Pi et GPIO
1. Les GPIO, comment ça marche ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
2. Connecter un écran LCD 16x2 au Raspberry Pi . . . . . . . . . . . . . . . . 290
3. Projet #1 : communiquer avec l'écran LCD . . . . . . . . . . . . . . . . . . . 297
4. Projet #2 : créer un tube FIFO dédié à l'écran LCD . . . . . . . . . . . . . 301
5. Projet #3 : piloter l'écran LCD
depuis une interface graphique tkinter . . . . . . . . . . . . . . . . . . . . . . . 306
6. Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
89
Chapitre 4
Documenter et tester
ses scripts en Python
1. Introduction
Documenter et tester ses scripts en Python
Cela n'est rien d'autre que l'aide de pydoc3. Attention cependant car chaque
version de Python installée sur le système est livrée avec sa propre version de
pydoc. Comme expliqué au chapitre Environnement de programmation, dif-
férentes versions de l'interpréteur Python doivent cohabiter sur le Raspberry
Pi. Il en est de même pour pydoc qui est livré dans ses versions 2.7 et 3.4. Par
défaut, le binaire pydoc pointe vers /usr/bin/pydoc2.7. Pensez donc à
toujours utiliser pydoc3 pour lire la documentation en rapport avec la ver-
sion 3 de Python.
pydoc3 permet donc de chercher et d'afficher la documentation de nombreux
topics ou sujets. Le sujet recherché correspond au terme passé en paramètre de
la commande. Dans cet exemple, le terme with est recherché et affiche la do-
cumentation qui lui est associée :
Naviguer dans less est relativement facile lorsque ces quelques raccourcis
sont assimilés. Une fois less fermé, pydoc3 suggère des sujets annexes qui
seraient susceptibles d'intéresser le développeur :