Apprendre l’Utilisation des fichiers sous Python : Cool ! Nous en sommes au dernier chapitre avant les projets pour apprendre la langage Python. Dans ce chapitre, nous verrons comment travailler avec des fichiers externes.
Dans le chapitre précédent, nous avons appris comment obtenir les commentaires des utilisateurs à l’aide de la fonction input(). Cependant, dans certains cas, il n’est pas toujours pratique d’amener les utilisateurs à entrer des données dans notre programme, surtout si notre programme doit travailler avec de grandes quantités de données.
Dans de tels cas, un moyen plus pratique est de préparer l’information nécessaire sous forme de fichier externe et d’obtenir de nos programmes qu’ils lisent l’information contenue dans le fichier. Dans ce chapitre, nous allons apprendre à le faire. Prêt ?
Sommaire
Ouverture et lecture des fichiers texte
Le premier type de fichier que nous allons lire est un simple fichier texte avec plusieurs lignes de texte. Pour ce faire, créons d’abord un fichier texte avec les lignes suivantes.
Apprendre Python Facilement et Gratuitement
Développer en Python
www.rankiing.net
Enregistrez ce fichier texte sous le nom myfile.txt sur votre bureau. Ensuite, lancez IDLE et tapez le code ci-dessous. Enregistrez ce code sous le nom fileOperation.py sur votre bureau également :
f = open (‘myfile.txt’, 'r')
firstline = f.readline()
secondline = f.readline()
print (firstline)
print (secondline)
f.close()
La première ligne du code ouvre le fichier. Avant de pouvoir lire n’importe quel fichier, nous devons l’ouvrir (tout comme vous devez ouvrir ce livre électronique sur votre appareil ou application pour le lire). La fonction open() fait cela et nécessite deux paramètres :
Le premier paramètre est le chemin d’accès au fichier. Si vous n’avez pas enregistré fileOperation.py et myfile.txt dans le même dossier (bureau dans ce cas), vous devez remplacer ‘myfile.txt’ par le chemin réel où vous avez enregistré le fichier texte.
Par exemple, si vous l’avez stocké dans un dossier nommé ‘PythonFiles’ dans votre lecteur C, vous devez écrire’C:\\PythonFiles\myfile.txt’ (avec double backslash \).
Le deuxième paramètre est le mode. Indique comment le fichier sera utilisé. Les modes couramment utilisés sont les suivants :
- ‘r’ mode: Pour la lecture seulement.
- ‘w’ mode: Pour l’écriture seulement. Si le fichier spécifié n’existe pas, il sera créé. Si le fichier spécifié existe, toutes les données existantes sur le fichier seront effacées.
- ‘a’ mode: Pour l’ajout. Si le fichier spécifié n’existe pas, il sera créé. Si le fichier spécifié existe, toutes les données écrites dans le fichier sont automatiquement ajoutées à la fin.
- ‘r+’ mode: Pour la lecture et l’écriture.
Après l’ouverture du fichier, l’instruction suivante firstline = f.readline() lit la première ligne du fichier et l’affecte à la variable firstline.
Chaque fois que la fonction readline() est appelée, elle lit une nouvelle ligne du fichier. Dans notre programme, readline() a été appelé deux fois. Les deux premières lignes seront donc lues. Lorsque vous exécutez le programme, vous obtiendrez le résultat :
Apprendre Python Facilement et Gratuitement
Développer en Python
Vous remarquerez qu’un saut de ligne est inséré après chaque ligne. C’est parce que la fonction readline() ajoute les caractères ‘\n’ à la fin de chaque ligne. Si vous ne voulez pas la ligne supplémentaire entre chaque ligne de texte, vous pouvez écrire print(firstline, end = ‘’). Ceci supprimera les caractères’\n’. Après lecture et impression des deux premières lignes, la dernière phrase f.close() ferme le fichier.
Vous devriez toujours fermer le fichier une fois que vous avez fini de le lire pour libérer toutes les ressources du système.
A lire >> Pourquoi 101desires.com Internet est-il le guide ultime pour tout savoir sur les ordinateurs ?
Utilisation d’une boucle pour lire des fichiers texte
En plus d’utiliser la méthode readline() ci-dessus pour lire un fichier texte, nous pouvons aussi utiliser une boucle for. En fait, la boucle for est un moyen plus élégant et plus efficace de lire des fichiers texte.
Le programme suivant montre comment procéder :
f = open (‘myfile.txt’, 'r')
for line in f:
print (line, end = ‘’)
f.close()
l’instruction For boucle à travers le fichier texte ligne par ligne. Quand vous l’exécuterez, vous obtiendrez :
Apprendre Python Facilement et Gratuitement
Développer en Python
www.rankiing.net
Ecrire dans un fichier texte
Maintenant que nous avons appris à ouvrir et à lire un fichier, essayons d’effectuer une opération d’écriture. Pour ce faire, nous utiliserons le mode ‘a’ (append).
Vous pouvez aussi utiliser le mode ‘w’, mais vous effacerez tout le contenu précédent du fichier si celui-ci existe déjà.
Essayez d’exécuter le programme suivant :
f = open (‘myfile.txt’, 'a')
f.write(‘\nParagraphe a ajouter.’)
f.write(‘\nPython is Fun!’)
f.close()
Ici nous utilisons la fonction write() pour ajouter les deux phrases au fichier, chacune commençant sur une nouvelle ligne puisque nous avons utilisé les caractères ‘\n’.
Ouverture et lecture des fichiers texte par Buffer Size
Parfois, nous pouvons vouloir lire un fichier par taille de tampon afin que notre programme n’utilise pas trop de ressources mémoire. Pour ce faire, nous pouvons utiliser la fonction read() (au lieu de la fonction readline()) qui nous permet de spécifier la taille de tampon que nous voulons.
Essayez le programme suivant :
inputFile = open (‘myfile.txt’, 'r')
outputFile = open (‘myoutputfile.txt’, 'w')
msg = inputFile.read(10)
while len(msg):
outputFile.write(msg)
msg = inputFile.read(10)
inputFile.close()
outputFile.close()
Tout d’abord, nous ouvrons deux fichiers, les fichiers inputFile.txt et outputFile.txt pour la lecture et l’écriture respectivement.
Ensuite, nous utilisons l’instruction msg = inputFile.read(10) et une boucle while pour faire une boucle dans le fichier 10 octets à la fois. La valeur 10 entre parenthèses indique à la fonction read() de ne lire que 10 octets. La condition while len(msg) : vérifie la longueur de la variable msg. Tant que la longueur n’est pas nulle, la boucle tourne.
Dans la boucle de while, l’instruction outputFile.write(msg) écrit le message dans le fichier de sortie. Après avoir écrit le message, l’instruction msg = inputFile.read(10) lit les 10 octets suivants et continue à le faire jusqu’à ce que le fichier entier soit lu. Lorsque cela se produit, le programme ferme les deux fichiers.
Lorsque vous exécutez le programme, un nouveau fichier myoutputfile.txt est créé. Lorsque vous ouvrez le fichier, vous remarquerez qu’il a le même contenu que votre fichier d’entrée myfile.txt. Pour prouver que seulement 10 octets sont lus à la fois, vous pouvez changer la ligne outputFile.write(msg) dans le programme en outputFile.write(msg +’\n’). Exécutez à nouveau le programme. myoutputfile.txt contient maintenant des lignes de 10 caractères au maximum.
Ouverture, lecture et écriture de fichiers binaires
Les fichiers binaires font référence à tout fichier qui ne contient pas de texte, comme les fichiers image ou vidéo. Pour travailler avec des fichiers binaires, nous utilisons simplement le mode ‘rb’ ou ‘wb’.
Copiez un fichier jpeg sur votre bureau et renommez-le myimage.jpg. Modifiez maintenant le programme ci-dessus en changeant les deux premières lignes de ligne :
inputFile = open (‘myfile.txt’, 'r')
outputFile = open (‘myoutputfile.txt’, 'w')
en
inputFile = open (‘myimage.jpg’, 'rb')
outputFile = open (‘myoutputimage.jpg’, 'wb')
Assurez-vous que vous changez également l’instruction outputFile.write(msg +’\n’) pour outputFile.write(msg).
Exécutez le nouveau programme. Vous devriez avoir un fichier image supplémentaire nommé myoutputimage.jpg sur votre bureau. Lorsque vous ouvrez le fichier image, il doit ressembler exactement à myimage.jpg.
Suppression et renommage de fichiers
Deux autres fonctions utiles que nous devons apprendre lorsque nous travaillons avec des fichiers sont les fonctions remove() et rename(). Ces fonctions sont disponibles dans le module os et doivent être importées avant que nous puissions les utiliser.
La fonction remove() supprime un fichier. La syntaxe est remove(nom de fichier). Par exemple, pour supprimer monfichier.txt, nous écrivons remove(‘monfichier.txt’).
La fonction renomme() renomme un fichier. La syntaxe est renome(ancien nom, nouveau nom). Pour renommer oldfile.txt en newfile.txt, nous écrivons rename(‘oldfile.txt’,’newfile.txt’).