背景
在linux下经常会遇到从windows下拷贝过来的zip文件解压乱码的问题,今天何三就来分享下如和使用python解决linux下解压zip文件乱码的问题,编写的python小脚本供大家参考
思路
- 出现乱码的原因大部分都是因为编码不统一造成的,windows下中文一般都是GBK编码,而linux下编码一般是UTF-8
- python中有一个zipfile解压模块,先利用zipfile读取zip文件中的每个文件,并将名称进行转码操作,也就是先从zip文件中正确的读取名称,然后在进行保存
代码实施
将下面的代码保存成uzip.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# uzip.py
import os
import sys
import zipfile
print("Processing File " + sys.argv[1])
file=zipfile.ZipFile(sys.argv[1],"r");
for name in file.namelist():
utf8name=name.decode('gbk')
print("Extracting " + utf8name)
pathname = os.path.dirname(utf8name)
if not os.path.exists(pathname) and pathname!= "":
os.makedirs(pathname)
data = file.read(name)
if not os.path.exists(utf8name):
fo = open(utf8name, "w")
fo.write(data)
fo.close
file.close()
调用:
> uzip.py abc.zip