[Python] Ma python3 non doveva aver risolto il problema dell'unicode?
Manlio Perillo
manlio.perillo a gmail.com
Mer 3 Lug 2013 16:27:59 CEST
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Il 02/07/2013 21:07, Gollum1 ha scritto:
> 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
>
Quando leggi una linea, Python restituisce anche '\n' alla fine della
stringa.
> 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.
Ho il vago sospetto che il concetto di "linea" non sia ben definito per
un file binario, e che tu potresti avere problemi se vuoi che il codice
sia portabile (prova a farlo girare su Windows). Questo almeno per il
C, ma non so se Python supporti il concetto di linea anche per file binari.
> [...]
Ciao Manlio
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAlHUNO8ACgkQscQJ24LbaUSExACeIgqyTwxScw+V33vsQvVWeGkJ
J6wAniO2XJn0FmeiUduqv5feiA4jvwer
=vVE+
-----END PGP SIGNATURE-----
Maggiori informazioni sulla lista
Python