En-tête de fichier csv

En-tête de fichier csv - Python - Programmation

Marsh Posté le 30-03-2009 à 19:41:49    

Bonjour,
avec python 2.5, j'extrais des fichiers csv comme suit :
cr=csv.reader(open(file),delimiter=';')
J'ai un fichier csv de plus de 200Mo dont je ne souhaite lire que l'en-tête.
C'est un tableau avec le nom des variables colonnes en première ligne.
Afin de gagner du temps, comment lire et extraire uniquement cette première ligne ?
Comme je dois répéter cette opération une centaine de fois avec des fichiers aussi volumineux, je ne veux pas tout lire!
Merci pour vos réponses.
 :jap:

Reply

Marsh Posté le 30-03-2009 à 19:41:49   

Reply

Marsh Posté le 30-03-2009 à 20:35:33    

Si tu ne veux lire qu'une ligne tu peux t'abstenir d'utiliser csv.reader :
 
exemple:

Code :
  1. # ouverture du fichier
  2. file_handler = open(file)
  3. # lit la premiere ligne
  4. first_line = file_handler.readline()
  5. # retourne dans une liste les elements "séparés"
  6. une_liste = first_line.split('=')
  7. # fermeture du fichier
  8. file_handler.close()


 
Cea etant, je ne suis pas sur que tu gagnes quoi que ce soit par rapport a simplement utiliser ta ligne de code et ne lire qu'un enregistrement ensuite. Il est possible que l'implementation du reader csv ressemble à celle ci dessus (qui doit d'ailleurs tres certainement chargé un bon bout de fichier en memoire).
(avec un peu de vérification, bien sur, là j'ai fait brutal !) :)

Reply

Marsh Posté le 30-03-2009 à 21:21:27    

À ma connaissance, csv.reader ne charge pas tout le fichier.
 
Il te suffit donc de faire

Code :
  1. headers = csv.reader(open(file, 'b'), delimiter=';').next()


 
edit: je viens de tester sur un CSV de 3.4Go, c'est instantané.


Message édité par masklinn le 30-03-2009 à 21:35:22

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 30-03-2009 à 23:55:56    

OK merci,
on a beaucoup d'options avec ce reader pratique.
Tout fonctionne.
A +

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed