Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. from zip import ZipFile
  2. for name in ZipFile('zipfile.zip').namelist():
  3. print('Listing zip files: %s' % name)
  4.  
  5. ZIP_FILENAME_UTF8_FLAG = 0x800
  6.  
  7. for info in ZipFile('zipfile.zip').filelist():
  8. filename = info.filename
  9. if info.flag_bits & ZIP_FILENAME_UTF8_FLAG == 0:
  10. filename_bytes = filename.encode('437')
  11. guessed_encoding = chardet.detect(filename_bytes)['encoding'] or 'cp1252'
  12. filename = filename_bytes.decode(guessed_encoding, 'replace')
  13. ...
  14.  
  15. if flags & 0x800:
  16. # UTF-8 file names extension
  17. filename = filename.decode('utf-8')
  18. else:
  19. # Historical ZIP filename encoding
  20. filename = filename.decode('cp437')
  21.  
  22. filename = corrupted_filename.encode('cp437').decode('cp866')
  23.  
  24. c:> 7z.exe a -tzip -mcu archive.zip <files>..
  25.  
  26. $ python -mzipfile -c archive.zip <files>..`
  27.  
  28. import chardet
  29. original_name = name
  30. try:
  31. name = name.encode('cp437')
  32. except UnicodeEncodeError:
  33. name = name.encode('utf8')
  34. encoding = chardet.detect(name)['encoding']
  35. name = name.decode(encoding)
  36.  
  37. from shutil import copyfileobj
  38. fp = archive.open(original_name)
  39. fp_out = open(name, 'wb')
  40. copyfileobj(fp, fp_out)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement