python 将gbk zipfile解压缩到utf8文件中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 将gbk zipfile解压缩到utf8文件中相关的知识,希望对你有一定的参考价值。
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#
# Author: Rex Zhang
# Create Time: 2013-07-28 12:32
# File name: unzipgbk.py
"""
./unzipgbk
unzip gbk zipfile into utf8 files
usage: ./unzipgbk File.zip [File1.zip ... ]
./unzipgbk 吉卜力.-.\[街头自动风琴演奏宫崎骏的世界\].专辑.\(ape\).zip
creating path ストリートオルガンが奏でる宮崎駿の世界
[1/16] ストリートオルガンが奏でる宮崎駿の世界/01.人生のメリーゴーランド.ape ...
[2/16] ストリートオルガンが奏でる宮崎駿の世界/02.世界の約束.ape ...
[3/16] ストリートオルガンが奏でる宮崎駿の世界/03.となりのトトロ.ape ...
[4/16] ストリートオルガンが奏でる宮崎駿の世界/04.さんぽ.ape ...
[5/16] ストリートオルガンが奏でる宮崎駿の世界/05.風のとおり道.ape ...
[6/16] ストリートオルガンが奏でる宮崎駿の世界/06.もののけ姫.ape ...
[7/16] ストリートオルガンが奏でる宮崎駿の世界/07.君をのせて.ape ...
[8/16] ストリートオルガンが奏でる宮崎駿の世界/08.晴れた日に.ape ...
[9/16] ストリートオルガンが奏でる宮崎駿の世界/09.やさしさに包まれたなら.ape ...
[10/16] ストリートオルガンが奏でる宮崎駿の世界/10.カントリーロード.ape ...
[11/16] ストリートオルガンが奏でる宮崎駿の世界/11.アドリアの海へ.ape ...
[12/16] ストリートオルガンが奏でる宮崎駿の世界/12.鳥の人 -エンディング-.ape ...
[13/16] ストリートオルガンが奏でる宮崎駿の世界/13.風の谷のナウシカ.ape ...
[14/16] ストリートオルガンが奏でる宮崎駿の世界/14.ふたたび.ape ...
[15/16] ストリートオルガンが奏でる宮崎駿の世界/15.いつも何度でも.ape ...
"""
from zipfile import ZipFile
import sys
import os
def unzip(zf):
source = ZipFile(zf, 'r')
total = len(source.filelist)
index = 0
for file in source.filelist:
if '/' in file.filename:
dirname = os.path.sep.join(file.filename.split('/')[:-1])
dirname = dirname.decode('gbk').encode('utf-8')
if not os.path.exists(dirname):
print 'creating path %s' % dirname
try:
os.popen('mkdir -p "%s"' % dirname)
except Exception as e:
print 'create path (%s) error: %s' % (dirname, str(e))
#ignore path
if file.filename.endswith('/'):
continue
try:
index += 1
new_name = file.filename.decode('gbk').encode('utf-8')
print '[%s/%s] %s ...' % (index, total, new_name)
fp = open(new_name, 'wb')
fp.write(source.read(file))
fp.close()
except Exception as e:
print 'error: ', e
source.close()
if __name__ == '__main__':
if len(sys.argv) <= 1:
print '''unzip gbk zipfile into utf8 files\nusage: %s File.zip [File1.zip ... ]''' % sys.argv[0]
exit(0)
for f in sys.argv[1:]:
unzip(f)
以上是关于python 将gbk zipfile解压缩到utf8文件中的主要内容,如果未能解决你的问题,请参考以下文章
python zipfile解压缩
Python 文件解压缩
python 用zipfile对文件进行压缩并加密(不让人解压缩并修改文件)如何实现
python python zipfile获取并解压缩片段
Python 解压缩文件详解
python怎样压缩和解压缩ZIP文件