Bruno Desthuilliers a écrit :
Christophe a écrit :
Bruno Desthuilliers a écrit :
Christophe a écrit :
Bruno Desthuilliers a écrit :
Christophe a écrit :
pil91 a écrit :
Bonjour, j'ai besoin de transformer en format csv délimité, des
fichiers fixes.
(snip)
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 ?
Peut-être le fait que le format csv soit la cible, pas la source ?-)
Et ? Le module csv fait lecture et écriture.
Oui. Il lit effectivement des csv. Ce qui n'est pas le cas des fichiers sources de l'OP, ni la source de son problème.
Ah, je m'excuse, j'avais mal vu l'énoncé et je confondais le format du fichier de format avec le format du fichier d'entrée de données. Comme quoi il est mal de répondre à ce genre de questions pendant les heures de travail (même pendant une pause) : on va trop vite et on rate des choses importantes :)
Pas de blème, ça arrive à tout le monde (moi le premier...) !-)
Je pense que tu pourrais aussi utiliser le module struct, qui semble mieux adapté pour ton problème.
Principe :
- définir une format décrivant la structure de tes enregistrements:
Exemple : Si ton enregistrement contient :
nom 30 caractères
prenom 20 caractères
tel 10 entiers
Tu crées un format = "30s20s10i"
import struct
format = "30s20s10i"
size = struct.calcsize (format)
in = open ("fichier.dat", "r")
out = open ("fichier.csv", "w")
while f:
data = in.read (size)
nom, prenom, tel = struct.unpack (format, data)
print >> out, "%s,%s,%d;", % (nom,prenom,tel)
in.close()
out.close()
A tester et vérifier, car je n'ai pas trop le temps maintenant, mais ca me semble une solution plus adaptée à ton besoin.
Par contre, je ne sais pas si ce sera plus efficace.