python 使用zip命令压缩文件夹 去掉绝对路径
[toc]
@(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 .
转载自:https://juejin.cn/post/6844903997854220296