TP : gestion des fichiers en python

publicité
Lycée Victor Hugo
MPSI-PCSI 2016-2017
TP : gestion des fichiers en python
Objectifs
Suite au travail préparatoire vous devez être capable de :
— créer un fichier ;
— écrire des données dans un fichier ;
— lire des données dans un fichier ;
— rajouter des données à un fichier.
I
Travail préparatoire
On pourra se reporter au document de cours (ResumeFichiers.pdf) pour se remémorer
les syntaxes.
1
Se placer dans le bon répertoire de travail
En python, on utilise le slash comme séparateur dans les chemins et le concept de
répertoire de travail courant. Il est alors possible de préciser la position d’un fichier
par rapport à ce répertoire courant : on parle de chemin relatif.
Question 1 H
Importer le module os (comme Operating System) sous le nom OpSyst (ou importer
les fonctions getcwd et chdir du module os), puis utiliser la fonction getcwd (sans
paramètre) pour obtenir le chemin du répertoire courant.
Quel est le type de son résultat ?
Pour changer le répertoire de travail courant, on utilise la fonction chdir du module os,
d’argument le nouveau chemin.
Question 2 H
Changer le répertoire de travail courant en /home/cpge/Téléchargements, puis vérifier
avec la fonction getcwd que le changement a bien été pris en compte.
2
Premiers essais
Télécharger les fichiers Renard.txt et Corbeau.txt
Script 3 H
Faire afficher (après l’avoir ouvert) le contenu du fichier Renard.txt en utilisant une
lecture globale (read) du fichier. On n’oubliera pas de refermer le descripteur de fichier.
1
Lycée Victor Hugo
MPSI-PCSI 2016-2017
Script 4 H
Faire afficher le contenu du fichier Corbeau.txt ligne après ligne à l’aide du descripteur.
On n’oubliera pas de refermer le descripteur de fichier.
Script 5 H
À l’aide de python, créer un nouveau fichier Fable.txt dans lequel on copiera le contenu
de Corbeau.txt
Script 6 H
Modifier le fichier Fable.txt en lui ajoutant le contenu de Renard.txt
Script 7 H
En utilisant l’instruction readline (sans "s"), compter le nombre de lignes de la dernière
version du fichier Fable.txt
II
Le championnat de foot
Télécharger le fichier ChampionsLigue1
Script 8 H
Parcourir le fichier ChampionsLigue1.txt et faire afficher pour chaque année une ligne
suivant le modèle suivant : En 2013, le champion fut Paris-SG.
Indication indispensable : les lignes du fichier contiennent diverses informations séparées
par des tabulations. On peut facilement récupérer ces différentes informations grâce à la
méthode split de la façon suivante :
details = ligne . split ( ’\ t ’)
Si ligne est une chaîne de caractères, details est alors une liste de chaînes de caractères
qui contient les diverses informations qui étaient séparées par des tabulations.
Script 9 H
Créer un fichier TitresDeMonPrefere.txt et y écrire les années (à raison d’une année
par ligne) en lesquelles un club (à choisir : le préféré) a été champion de France ; en
parcourant le fichier ChampionsLigue1.txt.
III
Jouons avec les nombres premiers
Dans le fichier TP13_1617.py est donnée une fonction qui rend la décomposition en
facteurs premiers d’un entier n > 2, sous la forme d’une liste (cf. description ci-après).
decomp ( n ) :
""" Renvoie la liste des facteurs premiers de n >=2 , par ordre
croissant des facteurs premiers
decomp (1350) renvoie [2 ,3 ,3 ,3 ,5 ,5] car 1350=2 * 3**3 * 5**2 """
2
Lycée Victor Hugo
1
MPSI-PCSI 2016-2017
Fabrication de fichiers
Script 10 H
Créer le fichier NbFacteursPremiers.txt stockant pour chaque entier entre 2 à 10000
inclus le nombre de facteurs premiers (avec répétition), i.e. la somme des puissances des
facteurs premiers.
Par exemple pour 8192 = 213 on aura 13, pour 9216 = 210 × 32 on aura 12.
On écrit une ligne par entier dans le format 8192:13.
Script 11 H
Créer le fichier Decomposition.txt stockant la décomposition des entiers de 2 à 10000
inclus. On stocke la décomposition sous la forme suivante, à raison d’une décomposition
par ligne dans le fichier.
2:2
3:3
4:2 ,2
...
8192:2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2
...
9216:2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,3 ,3
...
2
Exploitation des fichiers créés
Script 12 H
Créer un fichier NbPremier.txt, par lecture et exploitation de NbFacteursPremiers
.txt, dans lequel on stocke les nombres premiers entre 0 et 10000 inclus. Les nombres
premiers seront écrits sur une seule ligne, séparés par des virgules.
Le début du fichier est donc :
2 ,3 ,5 ,7 ,11 ,13 ,...
Les plus avancés (ou téméraires) pourront réfléchir à une façon de ne pas avoir la virgule
inutile à la fin...
Script 13 H
De même, créer un fichier Premier.txt donnant le caractère premier ou non sous la
forme entier tabulation True/False, à raison d’un entier (entre 2 et 10000 inclus)
par ligne :
2
3
4
5
...
True
True
False
True
Script 14 H
Créer un fichier DecompositionCompacte.txt, dans lequel on écrira sous forme compacte les décompositions des entiers compris entre 0 et 10000 inclus.
Pour n = pa11 × · · · pakk on écrira n : p1 , a1 , · · · , pk , ak .
Le début du fichier sera donc :
3
Lycée Victor Hugo
MPSI-PCSI 2016-2017
2:2 ,1
3:3 ,1
4:2 ,2
...
8192:2 ,13
...
9216:2 ,10 ,3 ,2
Script 15 H
Écrire à l’aide d’une recherche dans le fichier NbPremier.txt une fonction déterminant
si un nombre passé en argument est premier. Ce n’est pas une méthode pertinente, mais
l’objectif est de réfléchir aux typages utilisés.
IV
Jouons à être le service informatique d’un concours
Vous avez à votre disposition un fichier Admissible.txt avec les quatre champs suivants : numéro de candidat, Nom (en majuscules) et prénom (Initiale en majuscule, reste
en minuscules), résultat à l’écrit du concours, puis série d’oral pour les admissibles. Ces
quatre champs sont séparés par des tabulations, le nom et le prénom par un simple espace.
Script 16 H
Compter, à l’aide de python bien sûr, le nombre total de candidats et le nombre de
candidats admissibles.
Script 17 H
Créer quatre nouveaux fichiers texte contenant la liste des candidats de chaque série
d’oral (uniquement nom et prénom).
Script 18 H
Créer un fichier de candidats où ces derniers sont classés par ordre de numéro d’inscription.
4
Téléchargement