Python之压缩文件

系统: Windows10_64位

Python版本: 3.7

一. Zip文件的解压和压缩

0. 准备

zipfile模块是python的内嵌模块,所以不需要安装

1. 解压zip文件

比较简单,直接上代码

import zipfile

'''
zip_file_name: 待解压的zip文件
data_dir: 解压文件的存放路径
'''
f = zipfile.ZipFile(zip_file_name, "r")
f.extractall(path=data_dir)
f.close()

注意: 此方法只能解压zip文件,不能解压rar、tar等压缩文件,暂时还没有找到通用的解压方法。。。

2. zip压缩文件

import zipfile
'''
target: zip压缩文件路径
filename: 要压缩的文件路径
file_url: 要压缩文件在压缩文件夹内的路径(一般是filename的去掉前面一部分的相对路径,如果不去会压缩绝对路径)
'''
f = zipfile.ZipFile(target, 'w', zipfile.ZIP_DEFLATED)
f.write(filename, file_url)
f.close()

关于参数:

zipfile.ZipFile()的参数:

​ ZIP_DEFLATED:表示压缩, ZIP_STORE:表示只打包,不压缩。

​ allowZip64:一般当文件大小大于2GB时,将其设置为True

3. zip压缩文件夹

def zip_dirs(dir_list:list, zip_filename):
    zip_file = zipfile.ZipFile(zip_filename, "w", zipfile.ZIP_DEFLATED, allowZip64=True)
    for dir_path in dir_list:
        parent_dir = os.path.dirname(dir_path)
        for path, dir_list, file_list in os.walk(dir_path):
            # 去掉目标跟路径,只对目标文件夹下边的文件及文件夹进行压缩
            file_path = path.replace(parent_dir, "")
            for filename in file_list:
                zip_file.write(os.path.join(path, filename), os.path.join(file_path, filename))
    zip_file.close()

二. 解压RAR文件(有坑)

1. 安装unrar模块

pip install unrar 或 pip install rarfile

2. 引入rarfile模块并使用

from unrar import rarfile
file = rarfile.RarFile('file_name')  #这里写入的是需要解压的文件,别忘了加路径
file.extractall('you_want_path')  #这里写入的是你想要解压到的文件夹

但是这样会报错:

LookupError: Couldn't find path to unrar library.

意思是找不到 unrar library的路径,这里我们就需要去下载这个unrar library,事实上它就是UnRAR.dll这个东西,下载网址:http://www.rarlab.com/rar/UnRARDLL.exe 或者去http://www.rarlab.com/rar_add.htm找到UnRAR.dll下载,在lunix下应该需要自己编译。

3. 添加环境变量

找到安装目录,将其添加到环境变量,64位的需要将x64文件夹添加环境变量

注意: 因为unrar模块识别的文件是unrar.dll和unrar.lib,所以将文件夹中的UnRAR.dll和UnRAR.lib用小写重命名。Windows64位的还要将X64下面的UnRAR64.lib和UnRAR64.dall改为unrar.lib和unrar.dall去掉64且为小写。

RAR环境变量

添加完成后重启pycharm即可(不生效的话需要重启电脑生效)。

——End——


  • 参考文章

LookupError: Couldn’t find path to unrar library.
Unrar解压缩.rar文件

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值