python 解压zip ,rar 文件及编译错误的解决方法

最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程

 废话不多说,请看正文!

解压zip

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

解压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脚本目录下,运行就不会出错了。

链接:百度网盘 请输入提取码
提取码:tm4r
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zpeien

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值