python 使用zip命令压缩文件夹 去掉绝对路径

4,808 阅读2分钟

[toc]

#python + shutilzip 压缩命令

@(python)

遇到的问题

一、shutil.make_archive压缩后使用unzip解压后路径异常

根据需求选择合适的压缩命令

1.1、shutil.make_archive压缩后,unzip解压

1.2、zip压缩后unzip解压

二、zip压缩后使用unzip解压后带有绝对路径

去掉绝对路径的方法:

cd到被压缩的文件夹下面 用 && 连接zip压缩命令

os.system('cd ' + dst + ' && zip -q -r -m -o ' + 'TYLivingRoom.zip ' + '*')

基本操作

一、压缩

1.1、shutil.make_archive

语法

def make_archive(base_name,
                 format,
                 root_dir=None,
                 base_dir=None,
                 verbose=0,
                 dry_run=0,
                 owner=None,
                 group=None,
                 logger=None):

参数

参数 作用
base_name 创建的目标文件名,包括路径,减去任何特定格式的扩展
format 压缩包格式。”zip”, “tar”, “bztar”或”gztar”中的一个
root_dir 打包时切换到的根路径。也就是说,开始打包前,会先执行路径切换,切换到root_dir所指定的路径。默认值为当前路径
base_dir 开始打包的路径。也就是说,该命令会对base_dir所指定的路径进行打包,默认值为 root_dir ,即打包切换后的当前目录。亦可指定某一特定子目录,从而实现打包的文件包含此统一的前缀路径
owner 创建tar包时使用,默认为用户当前的 owner
group 创建tar包时使用,默认为用户当前的 group

1.2、zip

语法

zip -r test.zip *

参数

参数 作用
-q 表示不显示压缩进度状态
-r 表示子目录子文件全部压缩为zip。这部比较重要,不然的话只有something这个文件夹被压缩,里面的没有被压缩进去
-e 表示你的压缩文件需要加密,终端会提示你输入密码的
-m 表示压缩完删除原文件
-o 表示设置所有被压缩文件的最后修改时间为当前压缩时间

二、解压

1.1、shutil.unpack_archive

import shutil
shutil.unpack_archive('Python-3.3.0.tgz')

1.2、unzip

unzip -o TYLivingRoom.zip -d .