begin process at 2010 02 09 20:36:55
  Trouver un code source :
 
dans
 
Accueil > 

Tutoriels

 > 

Tutoriaux

 > traitement sequentiel des fichiers

traitement sequentiel des fichiers


 Information sur le tutoriel

Note :
Aucune note

 Description

Ce tutoriel explique comment traiter les fichiers de manière séquentielle, c'est à dire ligne par ligne. Il apprend a ouvrir, lire, créer des fichier

Tutorial

Gestion des fichiers

  • Role des fichiers

Echange de données entre plusieurs programmes
Permet de stocker des ensembles d'informations appelés "enregistrement"
Conserver des données à la fermeture d'une application
Récupérer des données à l'ouverture d'une application

  • Utilisation séquentielle (ligne par ligne)
  1. Préliminaires

Tout d’abord, il faut définir le répertoire dans lequel les fichiers seront stockés, pour cela, on a besoin d’importer les fonctions de la librairie os, il faut écrire en haut du programme :
from os import *
Puis :
chdir('C:\CheminRepertoire’)
Pour définir le dossier dans lequel on veut travailler.
Pour afficher le dossier courant :
print getcwd()

  1. Ouverture/Création d’un fichier

Fichier=file(NomFichier.type, mode)
#Type est l'extension, .txt pour un fichier texte classique
#mode est un mode d'ouverture

Modes :
'r' : le ficher existe déjà, ouverture en lecture seule

'w' : le fichier est ouvert en écriture seule, s'il existe déjà, il est tronqué et écrasé ; il est créé sinon.

'a' : le fichier est ouvert en écriture seule. S'il existe son contenu est conservé et les données ajoutées à la suite; il est créé sinon.

'r+' : le fichier doit déjà exister, est ouvert en lecture et écriture.

'w+' : le fichier est ouvert en lecture et en écriture, s'il existe déjà, il est tronqué et écrasé ; il est créé sinon.


Il est important de toujours fermer les fichiers après utilisation :

NomFichier.close()


  1. Lecture des lignes


En mode séquentiel, on lit les lignes les unes après les autres :

Ligne=NomFichier.readline()


Nous allons donner un exemple : Le fichier Premier.txt, dans le dossier ‘D:\Dossier Nombres’ contient la liste des nombres premiers entre 1 et 10 ; contenu du fichier :

2

3

5

7

Nous voulons lire le contenu de ce fichier dans notre programme :

from os import *

chdir('D:\Dossier Nombres')

Liste=file('Premier.txt','r')

Ligne=Liste.readline()

while Ligne<>"":

#Tant que les lignes ne sont pas vides

print Ligne

Ligne=Liste.readline()

Liste.close()


Resultat

>>>

2

3

5

7


  1. Ecriture dans un fichier

Pour écrire dans un fichier, on utilise write(), en ayant préalablement ouvert le fichier en mode ‘w’ ou ‘w+’.

Pour aller à la ligne, on écrit dans le fichier ‘\n’


Exemple : Nous voulons ajouter dans un fichier la lise des nombres premiers entre 1 et 10 en les indexant selon leur rang, c'est-à-dire :

1) 2

2) 3

3) 5

4) 7

Le fichier n’est pas encore créé.


from os import *

chdir('D:\Dossier Nombres')

fichier=file('Premier2.txt','w')

fichier.write('1) 2'+'\n')

fichier.write('2) 3'+'\n')

fichier.write('3) 5'+'\n')

fichier.write('4) 7'+'\n')

fichier.close()


Resultat

1) 2

2) 3

3) 5

4) 7


Commentaires

Commentaire de xeolin le 27/11/2008 12:17:56

Très bon tuto.

mais on préfère :

while Ligne != "":

à

while Ligne<>"":

et fichier=open('Premier2.txt','w')
à fichier=file('Premier2.txt','w')

(ce dernier sera retirer, normallement, dans python 3.0)

Sinon c'est un bon boulot.

Commentaire de thibault7249 le 04/02/2009 13:50:17

Merci personnellement,ça m'a beaucoup aidé :D

Commentaire de L20 le 21/05/2009 17:12:50

Super, merci !

Commentaire de Julien39 le 22/05/2009 10:59:49

Je suis content que ça vous ait servi.

Commentaire de Clempython le 03/01/2010 01:39:42

cette méthode de lecture est très lente, il vaut mieux utiliser:

dico = file("top10000fr.txt",'r')
x = dico.readlines()
dico.close() # fin de l'utilisation du fichier

# conversion en liste de mots sans \n
dico = []
for mot in x:
dico.append(mot[0:len(mot)-1])

Commentaire de Julien39 le 03/01/2010 08:25:05

oui, c'est vrai que ta méthode est plus rapide mais mon tutoriel s'appelle traitement SEQUENTIEL des fichiers, donc, ta remarque est hors sujet...

Commentaire de Clempython le 04/01/2010 21:42:05

Pas du tout après on fait le traitement séquentiel sur la liste obtenue, c'est juste plus rapide et plus simple.

Commentaire de Julien39 le 06/01/2010 12:29:32

Le traitement séquentiel est de lire le fichier ligne par ligne, la méthode .readlines() n'est pas une méthode séquentielle puisqu'elle lit toutes les lignes du fichier d'un coup.

Il est vrai que dans l'exemple que j'utilise, il serait plus rapide et plus simple d'utiliser cette méthode mais, je voulais montrer comment lire les fichiers de manière séquentielle, donc je ne l'ai pas utilisée.

Commentaire de Clempython le 06/01/2010 20:07:06

Non, ça charge le fichier ligne par ligne dans une liste (un seul chargement) c'est ensuite que l'on fait le traitement "séquentiel" sur la liste élément par élément.

C'est un bon tutoriel pour celui qui veut commencer la programmation par python en prenant les bons réflexes et qui ne cherche pas la performance à tout prix.

Commentaire de Julien39 le 10/01/2010 08:00:15

ha d'accord, je pensais que sequentiel vennait du fait que le fichier était lu ligne par ligne, alors tu as raison.

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,094 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales