Fichiers et entrées / sorties Sauvegarde des programmes dans des fichiers. Compilation. Lecture et écriture de données dans des fichiers. Formatage des.

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

La programmation orientée objet avec Java L3-MIAGE Plan
Support.ebsco.com Guide dUtilisation Création dune collection locale.
Premier programme en C :
Stockage de données.
1 Georgeta Bădău CRÉATION ET GESTION DUN BLOG AVEC LA PLATE-FORME LEWEBPEDAGOGIQUE.COM Séance no.4.
Portée des variables VBA & Excel
D/ Partage et permission NTFS
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
(Classes prédéfinies – API Java)
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Gestion de FICHIERS.
C.
Le publipostage La fonction de fusion permet de créer des documents identiques dans les grandes lignes que l’on personnalise automatiquement à chaque destinataires.
Outils de développements
Autorisations Utilisation eCATT
FLSI602 Génie Informatique et Réseaux
Commission scolaire des Laurentides
Par Fabrice Pasquier Cours III
Cours de programmation
Introduction à la programmation (420-PK2-SL) cours 12 Gestion des applications Technologie de linformation (LEA.BW)
Création d’un programme :
8PRO100 Éléments de programmation Allocation dynamique de la mémoire.
Les instructions PHP pour l'accès à une base de données MySql
Création d'un diaporama Création d'un diaporama
Quest-ce quune classe dallocation? Une classe dallocation détermine la portée et la durée de vie dun objet ou dune fonction.
Python La programmation objet
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Développer en C avec Eclipse Introduction Création d'un projet Ajout de fichiers Compilation Exécution Utiliser le débogueur Département dinformatique.
Structures de données IFT Abder Alikacem La classe string Département dinformatique et de génie logiciel Édition Septembre 2009 Département dinformatique.
SEANCE 10 Python Entrée et sortie de fichiers Lycée Louis Vincent Lundi 20 janvier
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
GPA435, GPA – ÉTS, T. Wong Génie de la production automatisée GPA435 Système dexploitation et programmation de système Chapitre 6 Partie II 2014.
CSI2520, Hiver 2007 Python Un langage de programmation par scripting et plus…
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
IFT 6800 Atelier en Technologies d’information
Chapitre 9 Les sous-programmes.
Initialisation des sites web Étapes importantes. La conversion de vos comptes Web nest pas terminée (après discussion avec les techniciens voici comment.
CSI3525: Concepts des Langages de Programmation Notes # 6: Langages de Programmation Fonctionelle II: Introduction au ML.
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Manipulation des fichiers dans le langage VB
Création de menus. Depuis la page d’accueil de votre site, cliquez sur le lien [Login] puis saisissez les identifiants qui vous ont été attribués. Connectez-vous.
Modules et packages Modules, fichiers, chemin d’accès à un module, espaces de noms, importation de modules ou d’attributs de modules, packages, exemples.
Plan cours La notion de pointeur et d’adresse mémoire.
Les fichiers texte en C++
1212 Entrée et sortie de fichiers Objectifs À la fin de ce cours, vous serez capables de : • Lire à partir de la console • Écrire sur la console.
Python Fonction et procédure
Dans la barre des messages, cliquez sur Activer la modification,
Création d’une application complète
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Créer des packages.
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
Les fichiers 1ère partie
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Fichier=open('monfichier.txt','w') >>> fichier.write('bonjour\n') 8 >>> liste ['le chien', 'le chat', 'le loup'] >>> for s in liste: fichier.write(s+'\n')
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Scripts et fonctions Instructions de contrôle
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
1Boulogne Informatic Club PRESENTATION DE WINDOWS 10.
L ES INSTRUCTIONS DE L ECTURE, E CRITURE ET A FFECTATION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie – Université.
Transcription de la présentation:

Fichiers et entrées / sorties Sauvegarde des programmes dans des fichiers. Compilation. Lecture et écriture de données dans des fichiers. Formatage des données en sortie.

2 Sauvegarde de vos programmes dans des fichiers Jusquà présent, nous avons utilisé Python en mode interactif ce qui a comme inconvénient que nous perdons les instructions de notre programme à la fermeture de linterpréteur. Nous allons maintenant rédiger notre programme dans un éditeur de textes tel que IDLE (Python GUI) en cliquant dans longlet File sur New Window pour créer un nouveau fichier ou sur Open pour ouvrir un fichier existant. Le programme peut ensuite être sauvegardé dans un fichier de type.py, copié, modifié, etc. Python (r252:60911, Feb , 13:11:45) [MSC v bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. **************************************************************** Personal firewall software may warn about the connection IDLE makes to its subprocess using this computer's internal loopback interface. This connection is not visible on any external interface and no data is sent to or received from the Internet. **************************************************************** IDLE >>> File Edit Shell Debug Options Windows Help

3 Compilation dun programme enregistré dans un fichier À la diapositive précédente, nous avons enregistré notre programme dans un fichier comme par exemple « essai.py ». #Voici mon programme …. A, B = input("Entrez les valeurs de A et de B : ") C1 = (A > 3) <= (B < 2) C2 = (B > 1) <= (A == 3) C3 = (A == 1) <= (B <= 1) print C1 and C2 and C3 File Edit Shell Debug Options Windows Help FormatRun Nous pouvons maintenant compiler et exécuter notre programme à partir de léditeur de textes IDLE (Python GUI) en cliquant dans longlet File sur Open pour ouvrir notre fichier « essai.py ». Cela donne lieu à la fenêtre suivante; il sagit alors de cliquer dans longlet Run sur Run Module. essai.py – E:\essai.py

4 Sauvegarde des données dun programme dans un fichier Nous allons considérer divers mécanismes permettant de créer des fichiers, dy envoyer des données et de les récupérer par après. Étape #1. Choix du répertoire dans lequel le fichier sera créé. >>> import os >>> repertoire_courant = os.getcwd() >>> print repertoire_courant C:\Python25\libs Pour connaître le répertoire courant, on peut procéder ainsi : Le module os renferme plusieurs fonctions permettant de dialoguer avec le système dexploitation. La fonction getcwd() du module os renvoie le nom du répertoire courant. Vous pouvez changer de répertoire courant comme suit : >>> import os >>> from os import * >>> chdir("E:\ProgrammesPython") >>> print getcwd() E:\ProgrammesPython >>> import os >>> os.chdir("E:\ProgrammesPython") >>> print os.getcwd() E:\ProgrammesPython ou encore

5 Étape #2. Ouverture dun fichier en écriture et écriture séquentielle. >>> FichierLogique = open("E:\ProgrammesPython\essai", "a") >>> FichierLogique.write("Si le fichier en écriture n'existe pas encore, il sera créé automatiquement. ") >>> FichierLogique.write("Par contre, si le nom utilisé concerne un fichier préexistant ") >>> FichierLogique.write("qui contient déjà des données, les caractères que vous y enregistrerez ") >>> FichierLogique.write("viendront s'ajouter à la suite de ceux qui s'y trouvent déjà.") >>> FichierLogique.close() La fonction open possède 2 chaînes de caractères comme paramètres, la première désigne le chemin daccès menant au répertoire courant et le nom du fichier à ouvrir (« essai »), la deuxième désigne le mode douverture : a :mode « append » qui consiste à ajouter les données à la fin du fichier. w :mode « write » qui entraîne la création dun nouveau fichier vide et lécriture des nouvelles données. Sil existe déjà un fichier de même nom, celui-ci est effacé au préalable. + :double accès en lecture / écriture b :accès binaire Au lieu de désigner explicitement le chemin daccès au répertoire courant, on peut le définir au début du programme comme précédemment. La méthode write() permet lécriture des données de manière séquentielle. Il ny a pas de séparateurs de ligne implicites. La méthode close() permet la fermeture du fichier pour le réutiliser par la suite.

6 Étape #3. Lecture séquentielle dun fichier de données. Exemple : Affichage à lécran du contenu dun fichier. >>> FichierLogique = open("E:\ProgrammesPython\essai", "r") >>> Contenu = FichierLogique.read() >>> print Contenu Si le fichier en écriture n'existe pas encore, il sera créé automatiquement. Par contre, si le nom utilisé concerne un fichier préexistant qui contient déjà des données, les caractères que vous y enregistrerez viendront s'ajouter à la suite de ceux qui s'y trouvent déjà. >>> FichierLogique.close() Lecture des données du fichier et transfert dans une variable de type string. Puisque la méthode read est utilisée sans argument et puisque nous navions inséré aucun caractère de séparation, la totalité du fichier est transférée. Ce code est raisonnable si la taille des fichiers nest pas trop importante. Mode douverture en lecture (valeur par défaut si non spécifié) Si le fichier nexiste pas, cela produit une erreur à lexécution. FichierLogique est un identificateur désignant le fichier ouvert.

7 Note : La méthode read peut être utilisée avec un argument, le # de caractères à lire, à partir de la position déjà atteinte dans le fichier. >>> FichierLogique = open("E:\ProgrammesPython\essai", "r") >>> print FichierLogique.read(13) Si le fichier >>> print FichierLogique.read(21) en écriture n'existe >>> print FichierLogique.read(1000) pas encore, il sera créé automatiquement. Par contre, si le nom utilisé concerne un fichier préexistant qui contient déjà des données, les caractères que vous y enregistrerez viendront s'ajouter à la suite de ceux qui s'y trouvent déjà. >>> print FichierLogique.read() >>> FichierLogique.close() Si le nombre de caractères à lire est supérieur au nombre présent dans le fichier, la lecture sarrête à la fin du fichier. Si la fin du fichier est déjà atteinte, read() renvoie une chaîne vide.

8 Copie dun fichier dans un autre, 10 caractères à la fois. Exemple : >>> def CopieDeFichier(FichierSource, FichierDestination): source = open(FichierSource, "r") destination = open(FichierDestination, "w") while 1: texte = source.read(10) if texte == "": break destination.write(texte) source.close() destination.close() return Un appel à cette fonction est réalisé comme suit : >>> CopieDeFichier("E:\ProgrammesPython\essai", "E:\ProgrammesPython\copie") Boucle sans fin. Interruption de la boucle lorsque la fin du fichier est rencontrée. Note :Les très gros fichiers de données peuvent demander trop de mémoire, auquel cas vous devrez vous résoudre à lire une ligne à la fois.

9 Insertion de marqueurs de fin de ligne dans un fichier : \n >>> F = open("E:\ProgrammesPython\Marqueurs", "w") >>> F.write("Nous pouvons insérer un marqueur de fin de lignes\n") >>> F.write("aux endroits où lon souhaite séparer les lignes du texte.\n\n") >>> F.write("Lors des opérations de lecture, les lignes dun fichier texte ") >>> F.write("peuvent être extraites séparément les unes des autres. La\n") >>> F.write("méthode readline() ne lit quune seule ligne à la fois\n") >>> F.write("(en incluant le caractère de fin de ligne).") >>> F.close() >>> F = open("E:\ProgrammesPython\Marqueurs", "r") >>> print F.readline() Nous pouvons insérer un marqueur de fin de lignes >>> print F.readline() aux endroits où lon souhaite séparer les lignes du texte. >>> LignesRestantes = F.readlines() >>> print LignesRestantes ['\n', 'Lors des opérations de lecture, les lignes dun fichier texte peuvent être extraites séparément les unes des autres. La\n', 'méthode readline() ne lit qu une seule ligne à la fois\n', '(en incluant le caractère de fin de ligne).'] >>> F.close() La méthode readlines() transfère toutes les lignes restantes dans une liste de chaînes tandis que readline() renvoie une chaîne.

10 Copie dun fichier texte en omettant les lignes de commentaires. Exemple : >>> def CopieSansCommentaires(FichierSource, FichierDestination): source = open(FichierSource, "r") destination = open(FichierDestination, "w") while 1: texte = source.readline() if texte == "": break if texte[0] != "#": destination.write(texte) source.close() destination.close() return Un appel à cette fonction est réalisé comme suit : >>> CopieSansCommentaires("E:\ProgrammesPython\essai", "E:\ProgrammesPython\copie") La variable texte contient à la fin le caractère de fin de ligne.

11 Lecture et enregistrement de valeurs autres que des chaînes de caractères. >>> a, b, c = 2, 3.75, 12. >>> F = open("E:ProgrammesPython\Valeurs", "w") >>> F.write(str(a)) >>> F.write(str(b)) >>> F.write(str(c)) >>> F.close() >>> F = open("E:ProgrammesPython\Valeurs", "r") >>> G = F.read() >>> print G, type(G) Ce nest plus possible de transformer de nouveau en valeurs numériques. Les données sont transformées en chaînes de caractères.

12 On peut procéder autrement en utilisant le module pickle permettant denregistrer des données en conservant leur type : >>> a, b, c = 2, 3.75, 12. >>> import pickle >>> F = open("E:ProgrammesPython\Valeurs", "w") >>> pickle.dump(a, F) >>> pickle.dump(b, F) >>> pickle.dump(c, F) >>> F.close() >>> F = open("E:ProgrammesPython\Valeurs", "r") >>> v = pickle.load(F) >>> print v, type(v) 2 >>> v = pickle.load(F) >>> print v, type(v) 3.75 >>> v = pickle.load(F) >>> print v, type(v) 12.0 Enregistrement des données avec leur type dans F. Lecture dune donnée respectant son type. Pour comprendre comment pickle fonctionne, nous avons : >>> F = open("E:ProgrammesPython\Valeurs", "r") >>> print F.read() I2.F3.75.F12.0.

13 Formatage de sortie à lécran Nous avons présenté jusquà maintenant 2 façons dafficher des valeurs à lécran : les expressions et linstruction print. Avec linstruction print, comment convertir des valeurs en chaînes de caractères ? >>> i, j, k = 5, 4, 20 >>> i, " fois ", j, " = ", k (5, ' fois ', 4, ' = ', 20) Les expressions ne nous donnent pas toujours le format approprié. >>> i, j, k = 5, 4, 20 >>> print i, " fois ", j, " = ", k 5 fois 4 = 20 >>> i, j, k = 5, 4, 20 >>> print i + " fois " + j + " = " + k Traceback (most recent call last): File " ", line 1, in print i + " fois " + j + " = " + k TypeError: unsupported operand type(s) for +: 'int' and 'str'

14 >>> i, j, k = 5, 4, 20 >>> print str(i) + " fois " + str(j) + " = " + str(k) 5 fois 4 = 20 La fonction str() permet de convertir une valeur numérique en chaîne de caractères. >>> i, j, k = 5, 4, 20 >>> print `i` + " fois " + `j` + " = " + `k` 5 fois 4 = 20 >>> import math >>> print "La surface du cercle de rayon 5 est : " + `math.pi * 5 * 5` La surface du cercle de rayon 5 est : On peut écrire la valeur numérique entre des guillemets renversés. >>> i, j, k = 5, 4, 20 >>> print "%5d fois %5d = %5d" (i, j, k) 5 fois 4 = 20 %5d désigne le formatage de i, j et k soit un entier à 5 positions. Puisque le format nest pas une chaîne de caractères, il y a conversion implicite. Les expressions sont listées entre parenthèses séparées par des virgules. %15s et %5.3f sont respectivement le format dune chaîne de caractères et celui dune valeur réelle. >>> import math >>> rayon = 5 >>> print "La %15s du cercle de rayon %3d est : %5.3f" % ("surface", rayon, math.pi * rayon ** 2) La surface du cercle de rayon 5 est :

15 print "\t i\t cube\n" i = 1 while (i <= 10): print "\t%4d\t%6d" % (i, i * i) i = i + 1 i cube \n :saut de ligne \t :tabulateur. >>> i = 1 >>> while (i <= 10): print i, i*2,# Supprime laffichage du caractère séparateur de lignes. i = i

16 Soit une chaîne de caractères renfermant une liste de prénoms avec leur cotisation annuelle à une association, cette chaîne a la forme suivante : $George&12.34$Luc&67%Lise&21.3$Marc&76.45%Jean&65.456# Chaque prénom est précédé dun signe $ si la cotisation a été renouvelée ou dun signe % si la cotisation est à payer. À la fin de chaque prénom, on retrouve le symbole & suivi du montant de la cotisation. Vous devez afficher un rapport avec trois colonnes, la 1 ière colonne renfermant la liste des prénoms, la 2 ième renfermant les montants de ceux qui ont renouvelé leur cotisation et la 3 ième colonne renfermant les montants de ceux qui nont pas payé leur cotisation. Finalement, on doit afficher le total des cotisations payées et celles non payées. Exemple – Impression dun rapport

17 Total_renouvele, Total_a_payer, i = 0.0, 0.0, 0 chaine_de_caracteres = input("Entrez la chaîne de caractères : ") print "\n\tCOTISATION\tCOTISATION\n\tRENOUVELÉE\tÀ PAYER\n\n" while (chaine_de_caracteres[i] != "#"): renouvelee = (chaine_de_caracteres[i] == "$") i = i + 1 nom = "" while (chaine_de_caracteres[i] != "&"): nom = nom + chaine_de_caracteres[i] i = i + 1 print nom, j = i+1 while (chaine_de_caracteres[j] != "$" and chaine_de_caracteres[j] != "%" and \ chaine_de_caracteres[j] != "#"): j = j + 1 cotisation = float(chaine_de_caracteres[i+1:j]) i = j if (renouvelee): Total_renouvele += cotisation else: print "\t\t", Total_a_payer += cotisation print "\t%6.2f" %(cotisation) print "\n\nTotal des cotisations renouvelées : ", Total_renouvele print "\nTotal des cotisations à payer : ", Total_a_payer

18 COTISATION RENOUVELÉEÀ PAYER George Luc Lise Marc Jean Total des cotisations renouvelées : Total des cotisations à payer :