#!/usr/bin/env python # -*- coding: utf-8 import sys import os import os.path from zipfile import ZipFile import shutil def process_file(root, filename): try: zf = ZipFile(filename) except: print "E %s" % f.decode('utf-8') for fileinfo in zf.infolist(): try: fn = unicode(fileinfo.filename, 'cp866') except: fn = unicode(fileinfo.filename) outputfile = open(os.path.join(root, fn.encode('utf-8')), "wb") shutil.copyfileobj(zf.open(fileinfo.filename), outputfile) outputfile.close() os.remove(filename) if __name__ == '__main__': for root, dirs, files in os.walk(sys.argv[1]): for f in files: filename = os.path.join(root, f) basename, extension = os.path.splitext(filename) if extension.lower() == '.zip': process_file(filename)Кривые-кривые имена файлов после find . -iname '*.zip' -execdir unzip {} \; и рассказали мне, что некоторые люди умудряются в 21 веке засунуть в архив файлы с именами в кодировке cp866. Впрочем, это ж акадэмики.
vendredi 28 janvier 2011
Inscription à :
Publier les commentaires (Atom)
Aucun commentaire:
Enregistrer un commentaire