zip文件
zipfile
基础使用
import zipfile
# 解压缩到指定目录
tmp_dir = 'xxxx'
with zipfile.ZipFile(zip_path, "r") as z:
z.extractall(tmp_dir)
示例代码
def dir_to_zip(
file_dir: str,
*,
output_name: str = None,
include: list[str] = None,
exclude: list[str] = list(),
) -> str:
"""
传入一个目录,将该目录压缩成zip文件
- param file_dir :{str} 要压缩的目录
- param output_name :{str} 压缩后导出的位置(绝对路径)
- param include=None :{list[str]} 指定哪些文件需要压缩,默认该目录下所有文件
- param exclude :{list[str]} 要排除的目录或者文件
@returns `{str}` 如果成功返回压缩包名字,如果失败返回空""字符串
@example
```python
tar_dir = r'xxxx/'
res = dir_to_zip(tar_dir)
if not res: return print('压缩失败')
```
"""
res = ""
if not output_name:
name = os.path.basename(file_dir).split(".")[0]
output_name = os.path.join(file_dir, f"{name}.zip")
if not include:
include = os.listdir(file_dir)
cur_dir = os.getcwd()
base_dir = os.path.basename(file_dir)
try:
os.chdir(file_dir)
with zipfile.ZipFile(output_name, "w") as z:
for each in include:
if each in exclude:
continue
z.write(each, compress_type=zipfile.ZIP_DEFLATED)
res = output_name
except Exception as e:
print("dir_to_zip fail: ", e)
return ""
finally:
os.chdir(cur_dir)
return res