前言:
眼前兄弟们对“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