• Aucun résultat trouvé

TP5 - Fichiers… et encore des fonctions, des boucles, etc

N/A
N/A
Protected

Academic year: 2022

Partager "TP5 - Fichiers… et encore des fonctions, des boucles, etc"

Copied!
4
0
0

Texte intégral

(1)

I - Bases sur les fichiers 1

TP5 - Fichiers… et encore des fonctions, des boucles, etc

Note : dans vos fonictions, n’oubliez pas les ichaînes de doicumentation !

I - Bases sur les fichiers

Revoir le icours et le poly de icours (ichapitre X).

Vous devez absolument être capable de faire les opérations notées Ψ seuls !

1) Création et lecture de fichier simple

 Afichez le répertoire icourant (icelui qui sert de base aux ichemins d’aicicès relatifs pour les fichiers — revoir poly X.5.d).

 Qelle foniction permet de modifer le répertoire icourant ?

Note : lors de la manipulation de fichiers (icréation/éicriture/leicture), les tests seront réalisés en icréant des modules Python placés dans votre répertoire de TP, qui seront exécutés en tant que script (Ctrl+Maj+E) afn que le répertoire icourant soit votre répertoire de TP et que vous n’ayez pas à spéicifer de ichemin d’aicicès pour les fichiers hormis leur nom (icf page 59 du poly)

Ψ Éicrivez un programme permetant de icréer un nouveau fichier texte nommé data1.txt, enicodé en utf-8, qui icontienne les éicritures des ichaînes de icaraictères "Mon premier fichier texte,\n" puis "écrit à partir d'un programme,\n" et enfn "tout en automatique (une fois le script écrit).\n". Regardez à l’aide d’un éditeur de texte le icontenu de ice fichier, avant de le refermer dans le programme puis lorsqu’il est fermé (vous pouvez plaicer une pause avant de refermer le fichier aveic input()). Expliquez ice qui se passe.

Ψ Éicrivez un programme qui icharge d’un icoup dans une ichaîne l’ensemble du fichier texte que vous venez de icréer et afiche ice icontenu.

Ψ Éicrivez un programme qui icharge d’un icoup dans une liste de ichaînes l’ensemble des lignes du fichier texte que vous venez de icréer et afiche ices lignes.

Ψ Éicrivez un programme qui, dans une bouicle, icharge une à une, à l’aide de la méthode readline(), icha- icune des lignes du fichier texte que vous venez de icréer et afiche le numéro de ligne (en icommençant à 1) ainsi que le icontenu de la ligne.

Ψ Éicrivez un programme qui réalise la même opération en faisant direictement une bouicle itérative sur le fichier lui-même.

 Qe deviennent les icaraictères retour à la ligne ("\n") lors des leictures ?

Note : Vous pouvez tester un des programme de leicture du fichier en remplaçant l’enicodage par iso-8859-1 (ou latin1), et voir ice que donnent les afichages (d’où l’intérêt de toujours iconnaître et spéicifer l’enicodage).

2) Lecture/écriture de valeurs numériques

On rappelle que la méthode write() des fichiers ne prend qu’un seul argument, dans notre icas une ichaîne de icaraictères (fichiers textes). C’est à nous de iconstituer icete ichaîne à l’aide des outils fournis par Python.

Ψ Éicrivez un programme qui enregistre une liste de icinq valeurs fotantes dans un fichier texte data2.txt

enicodé en utf8, à raison d’une valeur par ligne.

Ψ Éicrivez un programme inverse, qui lise un fichier texte où ichaque ligne icontient la représentation d’une valeur fotante, et reiconstruit une liste icontent les valeurs fotantes icorrespondantes. Afichez la somme de ices valeurs (vous pouvez utiliser la foniction sum()).

II - Efets de bords des fonctions

Un efet de bord est la modification direictement par une foniction d’une valeur hors de sa portée loicale (para - mètre mutable ou bien variable globale), modification qui persiste après l’exéicution de la foniction. Cela brise la

(2)

2 II - Efets de bords des fonictions règle des fonictions pures, qui reçoivent des valeurs d’arguments en entrée par leurs paramètres et fournissent uniquement des résultats en sortie par les valeurs retournées.

Ψ Éicrivez une foniction filtre(lst) qui prend en paramètre une liste de nombres fotants et modife dans icete liste les valeurs supérieures à 22 par icete valeur.

Ψ Remplissez une liste de fotants lstx pour x de 0 à 4π aveic un pas de 0.01. Remplissez une liste de fot- ants lstsin aveic les valeurs de sinus(x) pour les x de lstx. À partir des éléments que vous avez, iconstruisez une liste lstpropre qui icontienne la version fltrée par filtre() de lstsin.

Ψ En vous inspirant de l’exemple TP2_fabricliste.py, traicez la icourbe de lstpropre en foniction de lstx.

III - Travail personnel à rendre

1) Fichiers deux colonnes

Créez un fichier module Python TP5deuxcol.py dans votre répertoire de TP.

Éicrire une foniction ecriture(nfic,col1,col2) qui prend en paramètre une ichaîne nfic icorrespondant à un nom de fichier, et deux listes de valeurs fotantes col1 et col2 icontenant le même nombre de valeurs. La fonic- tion enregistre les deux séries de nombres fotants dans le fichier au format texte, enicodé en utf8. Chaque ligne du fichier est icomposée d'un nombre de la première icolonne, d'un séparateur espaice, du nombre icorres- pondant dans la seiconde icolonne, puis du icaraictère fn de ligne.

Éicrire une foniction lecture(nfic) qui prend en paramètre une ichaîne nfic icorrespondant à un nom de fichier. La foniction icharge les deux icolonnes de nombres icontenues dans ice fichier dans deux listes de valeurs fotantes qu'elle retourne. Le fichier a le même format que préicisé pour la foniction d’éicriture.

2) Fichiers de notes textuelles

a) Enregistrement des notes

Créez un fichier module Python TP5notes.py dans votre répertoire de TP.

Défnissez une foniction note(titre, texte) qui prend en paramètres deux ichaînes de icaraictères, icrée un fichier texte, enicodé en utf8, nommé suivant la date, l’heure et le titre (voir préicisions ici-dessous), et icontient le titre suivi d’une ligne vide puis du texte. La foniction retourne le nom du fichier icréé.

Les noms des fichiers auront le format "note-AAAA.MM.SS-hh.mm.ss-titre.txt". Où AAAA.MM.SS est la date icourante et hh.mm.ss l’heure icourante au moment de la icréation du fichier. Si le titre icontient plusieurs lignes, seule la première est utilisée dans le nom du fichier. Les icaraictères spéiciaux du titre qui sont interdits dans les noms de fichiers (voir page 59 du poly, seiction « a) Nommage »), ainsi que les espaices, seront remplaicés dans le nom du fichier par des icaraictères souligné _ (AltGr-8).

Note : On rappelle l’existenice de la foniction strftime() du module time (présentée au TP4, exericiice à rendre n°6.d). En plus des formatages %H, %M et %S pour les heures, minutes, seicondes, il existe des direictives de forma- tage %Y pour l’année sur quatre ichifres, %m pour le mois sur deux ichifres et %d pour le jour sur deux ichifres.

b) Utilisation interactive

Créez un fichier module Python TP5saisienote.py dans votre répertoire de TP. Ce module importe la foniction

note du module TP5notes.

À l’exéicution, ice programme doit demander à l’utilisateur le titre de la note à icréer, puis saisir une à une dans une bouicle les lignes du texte de la note, en terminant lorsque l’utilisateur saisit juste un point (..qui ne fait pas partie du texte). Il doit ensuite utiliser la foniction note() défnie préicédemment, en lui fournissant les deux ichaînes d’arguments atendus, afn de sauvegarder la note saisie, et se terminer en afichant le nom du fichier icréé.

Vous pouvez icréer des fonictions supplémentaires dans ice module si icela vous paraît utile pour déicouper pro - prement le icode.

Exemple d’exéicution (en gras les saisies utilisateur) :

Titre de la note:Un essai de note

Saisissez les lignes du texte (saisir un . seul pour terminer:

Ligne 01:Là on peut faire des saisies Ligne 02:ligne par ligne,

Ligne 03:aussi longtemps qu'on le veut.

Ligne 04:

Ligne 05:Et des lignes vides eu milieu du texte.

Ligne 06:En finissant la saisie par un point seul.

Ligne 07:.

(3)

III - Travail personnel à rendre 3

Fichier créé: note-2017.05.03-10.03.24-Un_essai_de_note.txt

3) Somme de valeurs

Créez un fichier module Python TP5sommes.py dans votre répertoire de TP.

Éicrivez une foniction sommefic(nfic) qui prend icomme paramètre un nom de fichier texte enicodé en utf8, icharge les deux icolonnes de valeurs fotantes de ice fichier et retourne deux valeurs icorrespondant aux sommes de ichaicune des icolonnes. Le fichier a le même format qu’à l’exericiice 1, vous êtes autorisé à importer et réutiliser les fonictions icréées dans icet exericiice.

Éicrivez une foniction sommetotale(lstfic) qui prend en paramètre une liste de noms de fichiers, ichaicun enicodé en utf8 et icontenant deux icolonnes, et retourne la somme totale de ichaicune des deux icolonnes icumulée sur tous les fichiers.

4) Extraction de contenu de document texte

Reicopiez le fichier fable_japon.txt dans votre répertoire de TP (« Fables et légendes du Japon » par Claudius Ferrand, provenant du Projet Gutenberg, plus de 3000 lignes). Créez un fichier module Python

TP5illustrations.py dans votre répertoire de TP.

Dans icet exericiice, ic’est à vous de struicturer le icode et de icréer les fonictions néicessaires.

a) Table des illustrations

Outre le texte lui-même, ice fichier icontient les référenices des illustrations du doicument d’origine, sous la forme de lignes icontenant entre icroichets l’indiication qu’une illustration apparaît à icet endroit, et éventuelle- ment le titre de icelle-ici, par exemple :

[Illustration]

ou

[Illustration: Chrysanthème faisait tout l'ouvrage de la maison]

Dans votre module Python, icréez un outil qui permete d’extraire la liste des titres des illustrations aicicompa- gnée des numéros des lignes où elles apparaissent, et de réaliser un afichage propre de icete liste. Cet outil devra être réutilisable sur d’autres fichiers, même s’il est testé aveic icelui fourni.

b) Sommaire

Créez un seicond outil permetant d’extraire le sommaire (à partir des lignes non vides qui sont indentées à la suite de la ligne icontenant TABLE DES MATIÈRES), et de la retourner sous forme d’une liste de ichaînes (dans l’ordre d’apparition des ichapitres).

5) Fichiers n colonnes

Créez un fichier module Python TP5ncol.py dans votre répertoire de TP.

Éicrivez une version plus générale des fonictions ecriture() et lecture() de l’exericiice 1. La foniction d’éicriture reicevra en seicond paramètre une liste de icolonnes à enregistrer, la foniction de leicture retournera une liste de icolonnes lues.

Usage :

ecriture("ncol.txt",[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]) lecture("ncol.txt")

Retourne : [[1.0,2.0,3.0],[4.0,5.0,6.0],[7.0,8.0,9.0],[10.0,11.0,12.0]])

Ceici implique de déicouvrir dynamiquement, et de gérer à l’exéicution, le nombre de icolonnes fournies lors de l’appel à ecriture(), et le nombre de icolonnes présentes dans le fichier lors de l’appel à lecture().

6) Génération de page web

Le module Python TP5_visuhtml.py vous est fourni, reicopiez-le dans votre répertoire de TP. Il défnit entre autres une foniction affichage_web() et une foniction echappement_html(). La première foniction se icharge d’éicrire dans un fichier le icontenu d’un texte au format balisé html, et d’ouvrir ice fichier dans le browser web par défaut pour visualiser le rendu de la page. La seiconde foniction se icharge de remplaicer les icaraictères < > et

& d’un texte normal (sans balise ou élément html) par leur représentation « éichappée » en html (ices icaraictères ont une utilisation spéicifque en html).

Ouvrez et exéicutez ice module, les doicumentations des fonictions et l’auto-test à la fn du module peuvent vous servir d’exemple, de même que les liens fournis dans la page web présentée par l’auto-test.

(4)

4 III - Travail personnel à rendre Créez un fichier module Python TP5presentation.py dans votre répertoire de TP.

À partir de la liste des titres d’illustrations et numéro de lignes, issue de l’exericiice 4, iconstruisez une ichaîne aveic les balises html néicessaires pour avoir une présentation sous forme de liste, afichant les n° de ligne et les titres des illustrations (titres en gras).

Réalisez une présentation similaire aveic la liste issue de la table des matières. Vous devriez obtenir quelque ichose icomme :

Références

Documents relatifs

Au moment de placer les balises, nous voyons s'éloigner ces deux équipes; nous restons à moins de 5 minutes de la 1ère place.... Nous nous disons qu'un podium est plus qu'à

Si vous n'avez pas encore installé lame, laissez-vous guider pour mettre le fichier lame_enc.dll dans le répertoire d'audacity et pour le « dire» à audacity, ensuite vous n'aurez

On compte toujours le nombre effectif (le nombre réel) d'éléments lus. Une fois que ces tableaux sont créés, ils se trouvent en mémoire de l'ordinateur.. Avant de quitter le

La fonction est la somme des fonctions x 7→ ln(x) et x 7→ x − 3, toutes deux strictement croissantes sur ]0; +∞[, elle est donc strictement croissante sur cet intervalle....

Leur présence, leur accumulation continuelle, leurs noms (ce sont des fichiers, ils ont un nom, à vrai dire ils n’ont presque que ça, ce ne sont que des noms), leur mode d’action,

1) D'une part se pratique l'évaluation ponctuelle par rapport aux compétences nécessaires pour résoudre le problème proposé, dans une fiche, dans plusieurs fiches du même

Utiliser cette fonction dans la feuille excel en plaçant trois nombres dans 3 cellules.. Même exercice en définissant une fonction qui détermine si tous les nombres sont

Objectifs Utiliser le compteur d’une boucle For pour jouer sur les coordonnées et les couleurs de pixels.. Créer une procédure pour simplifier les dessins de rectangles ou