Les méthodes pour manipuler les fichiers sont les suivantes.
open(fichier, mode)
" pour ouvrir un fichier : fichier
est le nom (chemin d'accès) du fichier à ouvrir, et mode
est le mode d'ouverture ("r"
/ "w"
/ "a"
). Cette fonction renvoie un objet de type « fichier ».
f.read(n)
" pour lire un certain nombre de caractères (octet pour les fichiers binaires). Si n
est négatif, renvoie tous les octets du fichier.
f.readline()
" renvoie la ligne suivante. Quand il n'y a pas de ligne suivante (fin de fichier), renvoie la chaine vide ""
.
f.readlines()
" renvoie la liste de toutes les lignes restantes. Quand il n'y a plus de lignes dans le fichier, renvoie la liste vide []
.
f.write(chaine)
" pour ajouter une chaine de caractères dans un fichier.
f.close()
" pour fermer un fichier ouvert.
Écrivez un petit programme Python qui crée un fichier test.txt
contenant le texte "Python, c'est moins compliqué que Java."
.
(Si le fichier test.txt
existe déjà, il est remplacé.)
Écrivez une procédure qui prend deux arguments : un nom de fichier et un numéro de ligne. La procédure affichera (avec print
) la ligne correspondante (et seulement celle ci) du fichier.
Écrivez une fonction qui compte le nombre de lignes présentes dans un fichier existant.
Écrivez une procédure qui rajoute, à la fin d'un fichier existant, la ligne "Ce fichier contient n lignes.
", où n
est le nombre de lignes du fichier.
Écrivez une fonction qui affiche la ligne la plus longue d'un fichier.
Écrivez une procédure qui numérote les lignes non-vides d'un fichier.
Écrivez une procédure qui transforme un fichier texte en fichier texte "double interligne" en rajoutant une ligne vide entre chaque ligne.
Écrivez une procédure qui transforme un fichier texte en fichier texte "espace triple" en remplaçant chaque espace par trois espaces.
Écrivez une fonction qui prend une chaine de caractères représentant une date au format américain (année/mois/jours
) et qui renvoie la même date au format français (jours/mois/année
).
Attention : les mois et jours peuvent être sur 1 ou deux caractères, et les années peuvent être sur 2 ou 4 caractères.
Écrivez une deuxième fonction qui renvoie la date dans un format lisible : 17 janvier 2013
.
Écrivez une procédure qui écrit la table des puissances jusqu'à n^m dans un fichier.
Après un appel à table_puissances(5, 5, "table.txt")
, le fichier table.txt
devra contenir
+-------+-------+-------+-------+ | 1 | 1 | 1 | 1 | | 2 | 4 | 8 | 16 | | 3 | 9 | 27 | 81 | | 4 | 16 | 64 | 256 | +-------+-------+-------+-------+
et après un appel à table_puissances(10, 7, "table.txt")
, le fichier devra contenir
+-----------+-----------+-----------+-----------+-----------+-----------+ | 1 | 1 | 1 | 1 | 1 | 1 | | 2 | 4 | 8 | 16 | 32 | 64 | | 3 | 9 | 27 | 81 | 243 | 729 | | 4 | 16 | 64 | 256 | 1024 | 4096 | | 5 | 25 | 125 | 625 | 3125 | 15625 | | 6 | 36 | 216 | 1296 | 7776 | 46656 | | 7 | 49 | 343 | 2401 | 16807 | 117649 | | 8 | 64 | 512 | 4096 | 32768 | 262144 | | 9 | 81 | 729 | 6561 | 59049 | 531441 | +-----------+-----------+-----------+-----------+-----------+-----------+
Remarques :
On suppose qu'un fichier tableur est sauvegardé au format texte, et que les colonnes sont séparées par des virgules. (Ce format de fichiers existe : il s'appelle CSV, comme Comma Separated Values...)
Par exemple :
pizza, taille, remarque, prix (€) fromage, normale,, 12 Vesuvio, XXL, pour les gros mangeurs, 16 quatre saisons, normale, végétarienne, 12 bambino, petite, menu enfant, 8 pizzana-split,, pizza dessert à la banane, 8
Écrivez une fonction qui prend en argument
et qui renvoie la liste des cases de la colonne correspondante à l'entier. Par exemple, sur la chaine ci-dessus, et pour l'entier 3, votre fonction renverra la liste ["prix (€)", "12", "16", "12", "8", "8"]
.
Remarque : il y a de nombreuses manières d'écrire cette fonction...
On dispose d'un fichier "dictionnaire" contenant des mots, par ordre alphabétique, avec leur définition. Chaque mot défini est seul sur une ligne, et les lignes suivantes sont la définition correspondante. La fin de la définition est notée par un unique "%
" sur une ligne. On passe ensuite au mots suivant. Par exemple :
ABAQUE 1- Terme d'architecture. Tailloir, partie supérieure du chapiteau des colonnes, sur laquelle porte l'architrave. 2- Terme d'antiquité. Tableau couvert de poussière, sur lequel on traçait des nombres et on enseignait le calcul ; et aussi sorte de carré long, évidé, qui était muni de boules passées dans des fils tendus et qui servait à compter. % ABBAYE 1- Monastère d'hommes ou de filles. 2- Le bénéfice attaché au titre d'abbé. 3- Les bâtiments du monastère % ABEILLE Insecte qui produit le miel et la cire, et qui appartient au genre des insectes hyménoptères. % ...
Écrivez une fonction cherche_definition(fichier, mot)
qui cherche la définition d'un mot donné en argument dans le dictionnaire contenu dans le fichier.
Il y a de nombreuses manières de parcourir les lignes d'un fichier :
f = open(fichier, "r") lignes = f.readlines() for i in range(len(lignes)): ... quelque chose avec lignes[i] ...
f = open(fichier, "r") lignes = f.readlines() for l in lignes: ... quelque chose avec l ...
f = open(fichier, "r") l = f.readline() while l != "": ... quelque chose avec l ... l = f.readline()
f = open(fichier, "r") for l in f: ... quelque chose avec l ...
Comparez les avantages et les inconvénients de ces méthodes.