在Python中压缩文件时保留目录,可以使用shutil
模块和zipfile
模块。
使用shutil
模块进行压缩时,可以使用make_archive
函数来创建压缩文件。为了保留目录结构,需要将base_dir
参数设置为要压缩的目录的根路径,并将root_dir
参数设置为空字符串。
下面是一个示例代码:
import shutil
# 要压缩的目录路径
source_dir = '/path/to/source/directory'
# 压缩文件保存路径及名称
output_filename = '/path/to/output/archive.zip'
# 创建压缩文件
shutil.make_archive(output_filename, 'zip', source_dir)
在使用zipfile
模块进行压缩时,需要逐个遍历要压缩的文件和子目录,并逐个添加到压缩文件中。需要注意的是,在添加文件时,需要保留文件在源目录中的相对路径。
下面是一个示例代码:
import zipfile
import os
# 要压缩的目录路径
source_dir = '/path/to/source/directory'
# 压缩文件保存路径及名称
output_filename = '/path/to/output/archive.zip'
# 创建压缩文件
with zipfile.ZipFile(output_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(source_dir):
for file in files:
file_path = os.path.join(root, file)
# 保留文件在源目录中的相对路径
arcname = os.path.relpath(file_path, source_dir)
zipf.write(file_path, arcname=arcname)
这样,在压缩文件中就会保留原始目录结构。
当然,在实际开发中,也可以使用第三方库如patool
、py7zr
等来进行文件压缩和解压缩操作,具体使用方法可以参考它们的官方文档。
关于腾讯云相关产品和产品介绍链接地址,由于不涉及云计算品牌商的信息,请自行查找相关资料。
领取专属 10元无门槛券
手把手带您无忧上云