Ateliers Python : Utiliser des fichiers textes www.mon-club-elec.fr Tous droits réservés – 2013 - 2016. Document gratuit. Ce support PDF d'atelier Python + Qt vous est offert. Pour acheter d'autres supports d'ateliers Python rendez-vous ici : http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.PythonShell Vous avez constaté une erreur ? une coquille ? N'hésitez pas à nous le signaler à cette adresse : [email protected] Truc d'utilisation : visualiser ce document en mode diaporama dans le visionneur PDF. Navigation avec les flèches HAUT / BAS ou la souris. En mode fenêtre, activer le panneau latéral vous facilitera la navigation dans le document. Bonne lecture ! Ateliers Python : ...– Par X. HINAULT – p. 1 / 8 Python : Utiliser des fichiers textes Par X. HINAULT – 2013 - 2016 – www.mon-club-elec.fr – Tous droits réservés Ce que l'on va faire ici • Dans ce tutoriel, apprenez à utiliser des fichiers texte en langage Python. Pré-requis : un système Gnu/Linux opérationnel • Je suppose ici que vous disposez ◦ d'un système graphique opérationnel (Gnu/Linux, Windows, Mac OsX) : ◦ avec Python installé ainsi que l'interpréteur Python de votre choix Lancer l'interpréteur Python • Commencer par la lancer l'interpréteur Python que vous souhaitez utiliser, soit en ligne de commande depuis une console, soit à partir du menu graphique du système. • Par exemple, on lancera dreampie en faisant : $ dreampie • On obtient : Ateliers Python : ...– Par X. HINAULT – p. 2 / 8 • A noter avec Dreampie la particularité qui consiste à saisir les instructions Python dans la fenêtre du bas. Conseil d'ami : paramétrer la fenêtre de votre interpréteur en mode « toujours au dessus » (clic droit sur la barre de titre sous Gnu/Linux) pour pouvoir facilement travailler avec ce tuto. Petit rappel : les chemins en Python Comme nous allons parlé des fichiers, il faut être capable de gérer simplement les chemins pour placer les fichiers à l’endroit voulu sur le système, la localisation par défaut étant le répertoire « courant » ce qui veut dire le répertoire le code Python que l’on exécute la plupart du temps. Ateliers Python : ...– Par X. HINAULT – p. 3 / 8 Ceci a été vu séparément et je rappelle simplement ici les quelques fonctions utiles : On commence par importer le module os : import os Ensuite, on accède aux chemins système de cette façon : os.getenv('HOME') # le répertoire user courant os.getcwd() # le répertoire courant Pour construire des chemins, on dispose de la fonction suivante : chemin=os.path.join(os.getenv('HOME'),'Bureau') # forme générale : os.path.join(chemin1,chemin2) Note : d’une manière générale, je vous conseille de prendre l’habitude de terminer vos chemins « racine » par / et de débuter les chemins des sous -répertoires sans / initial, tout comme cela se fait en ligne de commande. Doc complète du module os ici : https://docs.python.org/2/library/os.html Pour comprendre : ouvrir un fichier Ouvrir un fichier L’ouverture d’un fichier s’apparente à l’ouverture d’un tiroir : avant toute ouverture, vous n’avez aucun tiroir en main… De la même façon, avant l’ouverture d’un fichier, l’objet fichier n’existe pas pour votre code Python (le fichier existe bien sur le disque dur si il es déjà créé). C’est pour cela que l’on dispose d’une fonction d’ouverture native (ou fonction built-in) dans le langage Python : la fonction open( chemin, mode) Voir : https://docs.python.org/2/library/functions.html#open Ateliers Python : ...– Par X. HINAULT – p. 4 / 8 La fonction open() reçoit 2 paramètres : • le chemin (str) • le mode d’ouverture du fichier (str) : parmi ‘a’, ‘r’ et ‘w’ Logiquement, la fonction open() renvoie un objet file représentant le fichier. Les modes d’ouverture Lorsque l’on va ouvrir un fichier texte, on va disposer de 3 mode d’ouvertures possibles ayant chacun un fonctionnement particuliers : • le mode ‘r’ (read) : ouverture du fichier en lecture seule. • Le mode ‘w’ (write) : ouverture du fichier en mode lecture/écriture avec création du fichier si il n’existe pas et effacement du contenu si le fichier existe (ATTENTION DONC SI VOUS UTILISEZ LE MODE ‘w’ ) • le mode ‘a’ (append) : ouverture du fichier en mode lecture/écriture avec création du fichier si il n’existe pas et écriture sans effacement du contenu : le texte est ajouté « à la suite » (append) du texte déjà présent dans le fichier. En pratique, utiliser le mode ‘a’ par défaut et le mode ‘w’ que si on est sûr de ce qu’on fait. Les opérations sur le fichier Une fois que l’on a ouvert le fichier, on se retrouve dans la situation d’un tiroir que l’on tient en main : la fonction open renvoie un objet file représentant le fichier et sur lequel on va pouvoir réaliser les opérations suivantes accessibles par des fonctions : • . read() : renvoie le contenu du fichier • .write(<str>) : écrit le contenu dans le fichier • .close() : ferme le fichier, ce qui est à faire une fois les opération de lecture / écriture terminée. Tant que le fichier est ouvert, il n’est pas accessible par une autre programme. Pour information, bien qu’elles ne soient pas indispensables, savoir que l’objet file dispose d’autres fonctions bien utiles : Ateliers Python : ...– Par X. HINAULT – p. 5 / 8 • seek() : pour se positionner à l’endroit voulu • readlines() : renvoie la list des lignes d’un fichier Voir : https://docs.python.org/2/library/stdtypes.html#bltin-file-objects Créer un fichier texte et écrire des données dedans On va commencer par quelque chose de très simple : créer un fichier et écrire dedans puis relire le contenu : #!/usr/bin/python # -*- coding: utf-8 -*import os # fonction principale def main(): # definition du chemin du fichier filedir=os.getcwd() filename="test.txt" filepath=os.path.join(filedir,filename) print (filepath) # ecriture dans le fichier myfile=open(filepath, 'a') myfile.write('Coucou\n') myfile.close() # ouverture fichier et lecture myfile=open(filepath,'r') filecontent=myfile.read() myfile.close() Ateliers Python : ...– Par X. HINAULT – p. 6 / 8 print (filecontent) #--- obligatoire pour rendre code exécutable --if __name__ == "__main__": # cette condition est vraie si le fichier est le programme exécuté main()# appelle la fonction principale Ecrire 100 lignes numérotées de données Ecrire 1440 lignes de données horodatées Tranformer une liste de points en Gcode de perçage Fichier en lecture Extraire liste de lignes d’un fichier Parser un fichier SVG Ateliers Python : ...– Par X. HINAULT – p. 7 / 8 Console >>> maListe=list() Code >>> def multiplication(a,b): ... return a*b >>> x=2 >>> y=3.0 >>> multiplication (x,y) 6,0 >>> x=10 >>> y=5 >>> multiplication (x,y) 50 Remarquer une fois encore que la fonction multiplication peut ici recevoir des types différents et peut également renvoyer des types différents sans problème. Cela simplifie fortement la programmation, en tout cas pour des paramètres de type numériques. Remarque UBlabla . Conclusion Les instructions du langage Python vue dans ce tuto …. Ateliers Python : ...– Par X. HINAULT – p. 8 / 8