import os
import zipfile
def unzip(file_name):
zip_file = zipfile.ZipFile(file_name)
if os.path.isdir(file_name + "_files"): #建立新的文件夹
pass
else:
os.mkdir(file_name + "_files")
for names in zip_file.namelist(): #循环压缩包中的文件并保存进新文件夹。
zip_file.extract(names,file_name + "_files/")
zip_file.close()
unzip("D:\\学习\\****.zip")
这段代码运行后不会发生什么错误,不过文件名如果有中文字,就会出现中文字变成乱码,这样影响自己查找文件及观看。
import shutil
import zipfile
with zipfile.ZipFile('D:\\学习\\****.zip', 'r') as zf:
for fn in zf.namelist():
right_fn = fn.encode('cp437').decode('gbk') # 将文件名正确编码
print(right_fn)
right_fn = 'D:\\学习\\' + right_fn #要准确的文件地址,否则会查找文件失败。
with open(right_fn, 'wb') as output_file: # 创建并打开新文件
with zf.open(fn, 'r') as origin_file: # 打开原文件
shutil.copyfileobj(origin_file, output_file) # 将原文件内容复制到新文件
将zipfile.py文件打开,对里面的代码进行修改
第一处
if flags & 0x800:
# UTF-8 file names extension
filename = filename.decode('utf-8')
else:
# Historical ZIP filename encoding
filename = filename.decode('cp437') #原来的代码
#增加下面这句
filename = filename.encode("cp437").decode('gbk') #我修改的代码
第二处
if zinfo.flag_bits & 0x800:
# UTF-8 filename
fname_str = fname.decode("utf-8")
else:
fname_str = fname.decode("cp437") #原来的代码
#增加下面这句
fname_str = fname_str.encode("cp437").decode('gbk') #修改的代码
解压rar 压缩包,需要python 安装rarfile 包,可以在cmd 窗口中输入:
pip install rarfile
import rarfile
import os
def un_rar(file_name):
"""unrar zip file"""
rar = rarfile.RarFile(file_name)
if os.path.isdir(file_name + "_files"): #建立新文件夹
pass
else:
os.mkdir(file_name + "_files")
os.chdir(file_name + "_files")
rar.extractall() #解压rar文件保存进文件夹
rar.close()
un_rar('D:\\学习\\****.rar')
运行代码可能会出现以下的提示错误:
Unrar not installed? (rarfile.UNRAR_TOOL='unrar')
这是因为python 中没有安装有UnRAR.exe 这个文件,所以运行会失败
请以下链接下载UnRAR.exe 文件。 下载后将文件复制在 python脚本目录下,运行就不会出错了。
链接:https://pan.baidu.com/s/1rVgDMn2Lms7jVUUMaOHp3w
提取码:tm4r