在Linux上,解压缩电脑上的. zip文件时,由于编码问题,中文文件名和文件夹名可能会乱码……
为了方便,我自己写了一个解压缩python.zip文件的脚本。 可以使用测试。
脚本myunzip.py :
#! usr/dddxx/env python2
#-* -编码utf-8
导入操作系统
导入系统
导入zipfile
print ' processing file ' sys.argv [1]
file=zipfile.zipfile (sys.argv [1],' r ' );
for name in file.namelist () :
UTF8name=name.decode(gbk ) ) )。
打印' extracting ' utf8 name
pathname=OS.path.dirname (utf8 name ) )。
ifnotOS.path.exists(pathname ) and pathname!='':
是操作系统. makedirs (pathname )
data=file.read(name;
ifnotOS.path.exists(UTF8name ) :
fo=open(UTF8name,' w ' ) ) ) ) )。
o.write (数据) )。
fo.close
file.close (
解压缩文件时直接运行:
$ python myunzip.py xxx.zip
或者,请添加可执行权限后再运行。
$ chmod x myunzip.py
$ ./myunzip.py xxx.zip
Example :
附录(在Linux上使用enca显示文件编码和转换) ) ) ) ) ) ) ) ) ) ) )。
在Linux上进行开发和系统管理,经常会遇到乱码。 在主要的Windows上,中文编码经常使用GB2312和GBK,而在Linux上是UTF-8。 在许多情况下,与Windows平台系统的通信离不开编码转换。 也许大多数人都使用iconv库函数(包括在glib中)和iconv命令执行编码转换。 今天在另一个shell上推荐编码转换工具enca。 它不仅可以转换编码,还可以看到文件的原始编码,比iconv更容易使用。
在Ubuntu下安装enca很容易。 apt-get就可以了。
$ sudo apt-get install enca
enca的使用方法如下。
enca -L zh_CN file检查文件的编码
enca-l zh _ cn-x UTF-8文件将文件编码转换为" utf-8 "编码
如果不想重写enca-l zh _ cn-x utf-8文件1文件2元文件。
除了检查文件编码的功能外,“enca”还具有以下优点:如果该文件原本是要转换的编码,它是不报告错误、打印并生成结果还是“iconv”报告错误。 这对于编写脚本很有用。