[Python] Ma python3 non doveva aver risolto il problema dell'unicode?
Gollum1
gollum1.smeagol1 a gmail.com
Mar 2 Lug 2013 21:07:20 CEST
Il 02 luglio 2013 20:54, Manlio Perillo <manlio.perillo a gmail.com> ha scritto:
>> fi = open(file_name, "r")
>
> Devi aprire il file in modalità binaria, altrimenti Python assume che tu
> voglia leggere del testo, ed ovviamente ti restituisce stringhe Unicode!
sì, ho provato a mettere "rb" e funziona perfettamente, o meglio... quasi...
ora mi trovo che l'ultima riga che leggo, che contiene il digest
originale risulta essere:
b'4fcd6bb2a2afcc1b66172aca1f5dc864\n'
che naturalmente è diverso dal digest calcolato:
4fcd6bb2a2afcc1b66172aca1f5dc864
anche se l'informazione che portano è la stessa... come passo dalla
forma "binaria" a quella testuale?
>
>> lines = fi.readlines()
>> fi.close()
>>
>> buffer_digest = hashlib.md5()
>> for line in lines:
>
> Questo è folle.
> Leggere linea per linea è inefficiente, se devi fare l'hashing, e,
> *soprattutto*, è inefficiente leggere tutto in una volta.
>
> Leggi un blocco alla volta usando fi.read(buf_size)
non posso, le informazioni mi servono divise per riga per altre
elaborazioni. sopratutto mi risulta più semplice estrapolare l'ultima
riga, in cui si trova il digest, eliminare le ultime 4 righe per
calcolare il digest di confronto, successivamente estrapolare le prime
9 righe che contengono informazioni che devo trattare separatamente e
tutte le altre invece sono dati che devo gestire.... ogni riga è
praticamente un record...
sì, potrei usare SQLite, ma non è detto che dove deve essere usato il
programma possano installarlo... (e per ora sono ancora molto
ignorante in materia di SQLite e SQL in genere con python).
a questo punto mi rendo conto che dovrei convertire poi tutte le righe
in stringhe, prima di fare tutti i lavori che devo fare, dopo il
calcolo del digest naturalmente...
Byez
--
Gollum1
Tesssssoro, dov'é il mio tessssoro...
Maggiori informazioni sulla lista
Python