Je suis en train de lire un gros fichier de 30 Mo caractère par caractère. J'ai trouvé un article intéressant sur la façon de lire un gros fichier. Fast Method to Stream Big filesmmap en python impression données binaires au lieu du texte
Problème: Sortie d'impression des données binaires au lieu du texte lisible par l'homme réel
code:
def getRow(filepath):
offsets = get_offsets(filepath)
random.shuffle(offsets)
with gzip.open(filepath, "r+b") as f:
i = 0
mm = mmap.mmap(f.fileno(), 0, access = mmap.ACCESS_READ)
for position in offsets:
mm.seek(position)
record = mm.readline()
x = record.split(",")
yield x
def get_offsets(input_filename):
offsets = []
with open(input_filename, 'r+b') as f:
i = 0
mm = mmap.mmap(f.fileno(), 0, access = mmap.ACCESS_READ)
for record in iter(mm.readline, ''):
loc = mm.tell()
offsets.append(loc)
i += 1
return offsets
for line in getRow("hello.dat.gz"):
print line
Sortie: La sortie est produit des données binaires étranges.
['w\xc1\xd9S\xabP8xy\x8f\xd8\xae\xe3\xd8b&\xb6"\xbeZ\xf3P\xdc\x19&H\\@\x8e\x83\x0b\x81?R\xb0\xf2\xb5\xc1\x88rJ\
Est-ce que je fais quelque chose de terriblement stupide?
EDIT:
Je trouve le problème. C'est à cause de gzip.open
. Je ne sais pas comment me débarrasser de cela. Des idées?
Merci de votre participation. J'essaie de modifier ma méthode en conséquence. – vkrams