Python实现rar、zip和7z文件的压缩和解压

这篇具有很好参考价值的文章主要介绍了Python实现rar、zip和7z文件的压缩和解压。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、7z压缩文件的压缩和解压

1、安装py7zr

我们要先安装py7zr第三方库:

pip install py7zr

如果python环境有问题,执行上面那一条安装语句老是安装在默认的python环境的话,我们可以执行下面这条语句,将第三方库安装在项目的虚拟环境中:

pip install py7zr --target=E:\Python脚本\作业查重\OS_Study\venv\Lib\site-packages
2、解压7z文件
import py7zr
# 将压缩文件解压到指定目录
def decompress_7z():
	# 将要解压的压缩文件路径
    archive = py7zr.SevenZipFile(r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统.7z', mode='r')
    # 压缩文件的解压目录
    archive.extractall(path=r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统')
    archive.close()
3、压缩成7z文件
import py7zr
# 将指定目录压缩到指定压缩文件test.7z'
def compression_7z():
	# 生成的压缩文件路径
    archive = py7zr.SevenZipFile(r'E:\Python脚本\作业查重\test.7z', mode='w')
    # 需要压缩的压缩文件
    archive.writeall(path=r'../test')
    archive.close()

二、rar压缩文件的压缩和解压

1、环境准备

我们用到的第三方库为rarfile,因为我们的这个第三方库需要用到第三方程序,所以我们要先配一下环境。

(1)导入unrar模块:

pip install unrar

(2)下载 unrar library 并按照默认安装路径安装,下载链接:下载

(3) 编辑环境变量:

用户变量 -> 变量名:x64 -> 变量值:C:\Program Files (x86)\UnrarDLL\x64 (默认路径是这个)
系统变量 -> 变量名:UNRAR_LIB_PATH -> 变量值:C:\Program Files (x86)\UnrarDLL\x64\UnRAR64.dll (默认路径)[32位系统下的变量值为C:\Program Files (x86)\UnrarDLL\UnRAR.dll]

(4)安装winrar(360软件中心有):
winrar 的目录下的 unrar.exe 复制到 Python 路径的 Scripts 文件夹下。
(5)重启Pycharm

2、安装rarfile

执行以下命令:

pip install rarfile
3、解压rar文件
import rarfile
def decompress_rar():
	# 找到rar文件
    z = rarfile.RarFile(r'E:\Python脚本\作业查重\2015090103石凯-新闻管理系统.rar')  
    # 指定解压输出的目录
    z.extractall(r'E:\Python脚本\作业查重\2015090103石凯-新闻管理系统')  
    z.close()
    # 删除压缩文件
    # os.remove(pathRar)
4、压缩成rar文件

由于rarfile只能解压文件不能压缩文件,所以我们需要调用第三方程序来完成。

def compress(input_file, output_file, root_path,
        rar_path='D:/"Program Files"/WinRAR/WinRAR.exe'):
    """
    调用CMD命令压缩文件/文件夹
    Parameters
    ----------
    input_file : 需要压缩的文件/文件夹名。从哪一级目录开始,就会从哪一级开始压缩;
    output_file : 压缩文件的输出路径及其压缩的文件名;
        可以是.rar, .zip;
    root_path: input_file 所在目录;
    rar_path : WinRAR软件的安装路径,
        The default is 'C:/"Program Files"/WinRAR/WinRAR.exe'.
        
    NOTE: 路径和文件名中带空格的时候一定要多加一重引号!!
    """
    cmd_command = r'%s a %s %s' % (rar_path, output_file, input_file)
    print(root_path)
    os.chdir(root_path) # 切换工作目录
    print(cmd_command)
    os.system(cmd_command)
    
    if os.system(cmd_command)==0:
        print('Successful backup to', output_file)
    else:
        print('Backup FAILED', input_file)  


def rar(paths):
    files = os.listdir(paths)
    for path in files:
        input_file = '"' + path + '"'
        out = path.split('.')[0] + '_bak.rar'
        out_file = '"' + out + '"'
        print(path)
        print(out)
        compress(input_file,out_file,paths)

参考文章:https://blog.csdn.net/hanmengaidudu/article/details/120193682

三、zip文件的压缩和解压

1、安装zipfile

执行以下命令:

pip install zipfile
2、解压zip文件

使用zipfileextract()extractall()方法直接解压时,文件名可能会出现乱码,所以我们要特别解决这个问题:

# 出现乱码时解码
def recode(raw: str) -> str:
    try:
        return raw.encode('cp437').decode('gbk')

    except:
        return raw.encode('utf-8').decode('utf-8')

# 解压zip文件
def decompress_zip(pathZip, obj):
    zipFile = zipfile.ZipFile(pathZip)  # 压缩包路径
    zipFileList = zipFile.namelist()  # 获取压缩包里所有文件
    print('-------------------正在解压-----------------------')
    for f in zipFileList:
        zipFile.extract(f, obj)  # 循环解压文件到指定目录
        name1 = os.path.join(obj, f)  # 乱码文件名
        name2 = os.path.join(obj, recode(f))  # 解码后文件名
        os.rename(name1, name2)  # 文件重命名
    zipFile.close()  # 关闭文件释放内存
    print('-------------------解压完成-----------------------')
    # 删除压缩文件
    # os.remove(pathZip)
3、压缩成zip文件

参考文章:https://blog.csdn.net/Likianta/article/details/126710855

参考文章:https://blog.csdn.net/ooowwq/article/details/125949394

参考 文章:https://blog.csdn.net/qq_36182112/article/details/127630950

四、批量解压

如果想要实现批量解压某个目录下的全部压缩包的话,可以配合python自带的od库来实现,一些参考代码如下:文章来源地址https://www.toymoban.com/news/detail-470747.html

# 批量解压文件
def batch_decompress():
    file_names = os.listdir(r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统')  # 压缩文件所在的目录
    # print(file_names)

    print('-------------------正在解压-----------------------')
    for file_name in file_names:
        # 将文件名与目录拼接起来,得到文件绝对路径地址
        path_name = os.path.join(r'E:\Python脚本\作业查重\20大数据班Javaweb新闻系统', file_name)
        print(path_name)
        if path_name[path_name.find('.')+1:] == 'zip':
            decompress_zip(path_name)
        elif path_name[path_name.find('.')+1:] == 'rar':
            decompress_rar(path_name)
        else:
            decompress_7z(path_name)
    print('-------------------解压完成-----------------------')

到了这里,关于Python实现rar、zip和7z文件的压缩和解压的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux 压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    Linux 压缩、解压文件的方式有如下几种: tar 是一种常用的打包工具,可以将多个文件或目录打包成一个 tar 包,也可以将一个 tar 包解压缩到指定的目录。 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 tar 命令是 Linux 下常用的打包和压缩工具,用于将多个文件或目录打包成一

    2024年02月10日
    浏览(37)
  • 【Linux笔记】压缩、解压文件的 4 种方式。tar、gzip、gunzip、zip、unzip、7z命令使用方法

    目录 1、使用 tar 命令: 1.1. 压缩: 1.2. 解压: 1.3. tar 命令各参数含义 2. gzip、gunzip gzip 命令: 压缩文件: 保留原始文件,创建压缩文件: 保留原始文件,显示压缩进度: gunzip 命令: 解压文件: 保留压缩文件,创建原始文件: 保留压缩文件,显示解压进度: 3. zip、unzip

    2024年02月03日
    浏览(33)
  • .net rar zip压缩包解压

    引入  SharpCompress https://download.csdn.net/download/weixin_42020830/87737306 string targetFile=\\\"c:\\\\test.zip\\\"; string zipFile=\\\"c:\\\\test\\\";  using (Stream stream =System.IO.File.OpenRead(targetFile))                     {                         var reader = ReaderFactory.Open(stream);                         while (r

    2024年02月01日
    浏览(39)
  • 【Python脚本】使用Python解压zip、rar文件

    Python 本身不支持 rar 文件的解压,需要先安装相关依赖才可使用 pip3 install rarfile 安装rarfile库 (注意是解压,压缩这个方法不支持) 压缩包中存在多个文件时,可以使用for循环进行批量解压 安装 unrar 模块:pip install unrar 下载安装 unrar library,网址:http://www.rarlab.com/rar/UnRAR

    2024年02月05日
    浏览(33)
  • linux_文件压缩、文件解压(gzip命令、gunzip 命令、bzip2命令、bunzip2命令、tar命令、rar命令、zip命令)

    接上一篇:linux用户管理(查看在线用户who命令、创建用户adduser命令、创建用户组groupadd命令、查看用户组groups命令、删除用户、设置用户密码passwd命令) 本次来分享怎样在 linux中压缩和解压文件夹 ,在linux中压缩解压的方式有 5种 ,分别是 gz格式压缩解压、bz2格式压缩解压、

    2024年02月01日
    浏览(87)
  • Linux中_使用tar_gzip_zip_rar_命令_打包和解包_压缩和解压

    1.3.1、到当前目录下 1.3.2、到指定目录下 3.1.1、压缩当前目录: 3.1.2、压缩指定目录: 3.2.1、到当前目录 3.2.2、到指定目录 4.2.1、压缩文件本身: 4.2.2、递归压缩,将指定目录下所有文件和子目录一并压缩:

    2024年02月04日
    浏览(51)
  • 服务器使用——解压常见文件tar、zip、rar等

    1.tar文件 2.zip文件 这篇关于zip博客写的挺全的,这里直接放链接。 3.rar文件 首先下载RAR 6.21 for Linux x64 下载完后安装: 加压后可以看到有一个rar.txt,里面有rar具体的使用方法。这里粘贴复制下来

    2024年02月10日
    浏览(40)
  • 【Linux】解压缩文件命令(7z、zip,tar等)

    压缩文件: zip compressed.zip file1.txt file2.txt folder/ 解压文件: unzip compressed.zip -d destination_folder/ 压缩文件: 7z a compressed.7z file1.txt file2.txt folder/ 解压文件: 7z x compressed.7z -odestination_folder/ 常用于对单个文件进行压缩,生成 .gz 后缀的压缩文件。可以使用以下命令进行压缩和解压

    2024年02月10日
    浏览(40)
  • 轻量级力量:深入MiniZip库,实现C++中ZIP文件的简便压缩与解压

      MiniZip是一个轻量级的压缩库,它是zlib库的一部分,用于在C++中进行ZIP文件的压缩和解压缩操作。以下是MiniZip的一些功能和优点: 功能: 创建ZIP文件:  MiniZip可以用于创建包含一个或多个文件的ZIP归档。 压缩:  MiniZip支持使用不同的压缩算法对文件进行压缩,例如DEFL

    2024年02月04日
    浏览(31)
  • Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

       用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEntry是用来创建压缩文件的。    举个例子,向压缩文件中添加一个文件的代码: 如下图:    在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dirsecond-01.txt”)    在使用ZipOutputStrea

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包