[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