Sujet: Re: Optimisation
De: philippe.lotton (l' arobase) gmail.com (pil91)
Groupes: fr.comp.lang.python
Organisation: http://groups.google.com
Date: 10. Sep 2008, 16:45:26
On 10 sep, 17:31, pil91 <philippe.lot...@gmail.com> wrote:
On 10 sep, 17:03, Christophe <chris.cavala...@free.fr> wrote:
pil91 a écrit :
Bonjour, j'ai besoin de transformer en format csv délimité, des
fichiers fixes.
Le problème c'est que ces fichiers peuvent être très gros, plusieurs
millions de lignes et plusieurs milliers de caractères par ligne.
J'ai donc écrit ce code sous windows en Python 2.5.2, qui, je pense
pourrait être bien optimisé.
Merci d'avance pour vos suggestions.
========> > > # _*_ coding: utf8 _*_
#!/usr/bin/env python
# Auteur : Philippe Lotton
# Date de création:
import sys
import datetime
C'est pas une suggestion d'optim (enfin, ça pourrait le devenir) mais y
a-t-il une raison pour laquelle vous n'utilisez pas le module standard
csv ? Au début, je pensais que vous aviez écrit votre solution pour
justement être plus performant mais en regardant le source de csv.py, je
constate que celui-ci délègue la majorité du travail à un module et C.
En fait si, c'est bien une suggestion d'optim après tout.
Je pensais améliorer les choses en remplacant la concaténation de ma
chaine un append dans un tableau, puis un join
----
else :
sortie = []
for j in format:
params = j.split(',') #Création d'un
tableau de paramètres
pos1 = int(params[0])-1 #Position 1
pos2 = pos1 + int(params[1]) #Position 2
temp = ligne_source[ pos1:pos2]
sortie.append(temp)
result = ','.join(sortie)
out.write(result + "\n")
sortie = []
fic_source.close()
out.close()
---
Excès d'autosatisfaction, c'est quif quif, 18s, sur 1 000 000
d'enregistrement avec cette structure
------
aaaaaaaaaaabbbbwyyyyyyyyyyyyyyy
tttttttttttppppbqqqqqqqqqqqqqqq
rrrrrrrrrrrhhhhkeeeeeeeeeeeeeee
-------
@Christophe
Oui c'est vrai le module csv, ben... j'ai essayé de l'importer et puis
après je suis passé à autre chose.
Quand je lancais l'exécution j'obtenais un message 'module object has
no attribute reader.
@Bruno Desthuilliers
Merci pour ce cours magistral, je revois ma copie demain :).
Effectivement l'utilisation du module csv serait plus orthodoxe et
efficace.