#1 Le 05/12/2007, à 13:39
- AppleSeed
[Résolu] python et la zipfile lib (demande de l'info crc)
Bonjour,
Je cherche a récupérer le crc de chaque fichier se trouvant dans un fichier zip (un ajouter le support des fichiers zip à un projet), hors je me heurte à un petit problème : le crc que me retourne la zipfile lib est plutà´t amusante ...
Petit test : je crée un fichier zip, "test.zip", comportant plusieurs petits fichiers pris au pif (avec file roller 2.20.1). Chaque fichier à dans son nom le crc qu'il avait avec que le compresse. Ensuite j'exécute ce bout de code:
#!/usr/bin/python
import zipfile
z = zipfile.ZipFile("test.zip","r")
for item in z.namelist():
print "-----"
print "nom du fichier : " + item
print "crc que retourne la lib zipfile : " + str(z.getinfo(item).CRC)
print "meme chose mais en hexa : " + hex(z.getinfo(item).CRC)
z.testzip()
z.close()
ce qui me retourne :
nom du fichier : test 6 - [B21E7713]
crc que retourne la lib zipfile : -1306626285
meme chose mais en hexa : -0x4de188ed
-----
nom du fichier : test 5 - [53FD6D88]
crc que retourne la lib zipfile : 1409117576
meme chose mais en hexa : 0x53fd6d88
-----
nom du fichier : test 4 - [E7D20947]
crc que retourne la lib zipfile : -405665465
meme chose mais en hexa : -0x182df6b9
-----
nom du fichier : test 3 - [44F01686]
crc que retourne la lib zipfile : 1156585094
meme chose mais en hexa : 0x44f01686
-----
nom du fichier : test 2 - [037C75B0]
crc que retourne la lib zipfile : 58488240
meme chose mais en hexa : 0x37c75b0
-----
nom du fichier : test 1 - [2B4FDD58]
crc que retourne la lib zipfile : 726654296
meme chose mais en hexa : 0x2b4fdd58
On s'aperçoit que pour les fichiers nommés "test 1", "test 2", "test 3", et "test 5" cela fonctionne, mais pas pour "test 4" et "test 6" qui retourne n'importe quoi... la fonction testzip ne me retourne pourtant pas d'erreur. Si je test avec d'autre programme, non python, supportant les fichiers zip, le crc retourné pour chaque fichier est correct.
Je suis en Gutsy 64bits. Si qq à une idée...
Merci de và´tre aide.
Dernière modification par AppleSeed (Le 09/12/2007, à 00:29)
Hors ligne
#2 Le 08/12/2007, à 13:40
- mrlem
Re : [Résolu] python et la zipfile lib (demande de l'info crc)
Salut,
Je ne suis pas expert Python, mais on dirait que sur ta machine, la valeur de CRC est interprétée comme négative (genre à cause de ta machine 64 bits et du fait que le CRC soit 32 bits ?).
Si d'autres programmes te disent que cette valeur est bonne, alors c'est en effet juste un problème d'interprétation. Tu devrais pouvoir pallier au problème de manière rapide en remplaçant :
z.getinfo(item).CRC
par :
z.getinfo(item).CRC & 0xffffffffL
Mais quelqu'un de plus familier avec Python te donnera sûrement une manière plus propre de le faire.
Bonne chance
Hors ligne
#3 Le 09/12/2007, à 00:24
- AppleSeed
Re : [Résolu] python et la zipfile lib (demande de l'info crc)
Merci beaucoup, je vais tester ça ^^
à‰dit : Cela marche super bien, merci encore
Dernière modification par AppleSeed (Le 09/12/2007, à 00:29)
Hors ligne