龙空技术网

Python强大的RAR文件操作技巧与实例

云中随心而记 189

前言:

眼前兄弟们对“python文件压缩为rar”大约比较重视,各位老铁们都需要了解一些“python文件压缩为rar”的相关文章。那么小编也在网络上收集了一些关于“python文件压缩为rar””的相关资讯,希望我们能喜欢,你们快快来学习一下吧!

压缩为rar使用zipfile三方库即可

解压缩则有一个特殊处理:

安装WinRAR.exe程序后,在安装目录有一个名为"UnRAR.exe" 文件,需要把"UnRAR.exe"的文件拷贝到执行的代码同一个目录下

代码如下:

import osimport rarfileimport zipfileclass RarOperations:    def __init__(self):        self.folder_path = folder_path   #要压缩的原始文件夹        self.extract_path = extract_path  #解压缩的到路径文件夹        self.rar_path = rar_path   #生成的rar文件  如2.rar    def compress_folder_to_rar(self):        """        压缩文件夹为.rar        :return:        """        with zipfile.ZipFile(self.rar_path  + '.rar'  ,'w',zipfile.ZIP_DEFLATED) as rar:            for root,_,files in os.walk(self.folder_path):                for file in files:                    file_path = os.path.join(root,file)                    arc_name = os.path.relpath(file_path,self.folder_path)   #获取文件rar中相对路径                    rar.write(file_path,arc_name)   #将文件添加到rar文件中    def compress_rar_from_folder_with_special_files(self,file_names=None,file_extensions=None):        """        :param rar_file_path:   要压缩的文件夹路径        :param file_names:      要压缩的特定文件名列表  如[1.txt ,2.txt]     是特定的选择的文件        :param file_extensions: 要压缩的特定文件扩展名列表 ['.txt' , '.csv']  所有类型的后缀的文件        :return:        """        with zipfile.ZipFile(self.rar_path + '.rar'  ,'w',zipfile.ZIP_DEFLATED) as zip_ref:            for root, _, files in os.walk(self.folder_path):                for file in files:                    path = os.path.join(root, file)                    file_name = os.path.basename(file)                    if file_names and file_name not in file_names:                        continue                    if file_extensions and not any(file.endswith(ext) for ext in file_extensions):                        continue                    arc_name = os.path.relpath(path, self.folder_path)                    zip_ref.write(path, arc_name)    def extract_rar(self):        with rarfile.RarFile(self.rar_path,'r') as rar:            rar.extractall(self.extract_path)if __name__ == '__main__':    rar_path = r'D:\remote1'    extract_path = r'D:\2023'    folder_path = r'D:\remote'    # RarOperations().compress_folder_to_rar()    # RarOperations().compress_rar_from_folder_with_special_files(file_extensions=['.xml'])    # RarOperations().extract_rar()

解释:

首先,我们导入了需要的库:zipfile用于创建和处理ZIP、RAR格式的压缩文件,os用于操作文件和文件夹。定义了一个名为compress_folder_to_rar的函数,它接受两个参数:folder_path表示要压缩的文件夹路径,rar_path表示压缩后的RAR文件路径。在函数内部,我们使用zipfile.ZipFile类创建了一个RAR文件对象,并传递了rar_path、'w'(表示写入)和zipfile.ZIP_DEFLATED(用于指定压缩算法)作为参数。使用with语句可以确保在完成压缩操作后自动关闭RAR文件。使用os.walk函数遍历文件夹中的所有文件和子文件夹。os.walk会生成一个三元组(root, dirs, files),其中root表示当前文件夹路径,dirs表示当前文件夹中的子文件夹列表,files表示当前文件夹中的文件列表。循环遍历files中的文件列表,得到每个文件的路径file_path。使用os.path.relpath函数获取file_path相对于folder_path的相对路径,并将其赋值给rar_path_within_rar变量。这样可以在RAR文件中保持文件的相对路径结构。使用rar.write方法将文件添加到RAR文件中,并将rar_path_within_rar作为arcname参数传递。这样可以将文件保存在RAR文件中的指定路径下。在示例用法部分,我们设置了folder_path和rar_path的示例路径,并调用compress_folder_to_rar函数进行压缩。

标签: #python文件压缩为rar