Python 标准库zipfile将文件夹加入压缩包的操作方法
作者:Likianta Me 时间:2021-09-17 14:06:10
zipfile模块是python中一个处理压缩文件的模块,解决了不少我们平常需要处理压缩文件的需求。大家还知道Python zipfile 库可用于压缩/解压 zip 文件. 本文介绍一下如何创建压缩包.
将 “文件” 加入压缩包
假设目录结构如下:
my_project
|- 唐诗三百首.txt # 这是要打包的文件
|- demo.py # 演示代码会在这里编写
|- _______ # 我们想要在这里生成一个名为 "output.zip" 的文件
“demo.py” 内容如下:
from zipfile import ZipFile
handle = ZipFile('output.zip', 'w')
handle.write('唐诗三百首.txt')
handle.close()
将 “文件夹” 加入压缩包
ZipFile 支持两种路径写入方式:
绝对路径
handle = ZipFile('output.zip', 'w')
handle.write('c:/aaa/bbb/唐诗三百首.txt')
handle.close()
会生成:
~/output.zip
|= aaa
|= bbb
|- 唐诗三百首.txt
相对路径
"""
假设目录结构为:
my_project
|= aaa
|= bbb
|= 唐宋诗词 # 我们想打包这个文件夹
|- 唐诗三百首.txt
|- 宋词三百首.txt
|- demo.py
|- _______ # 在这里生成 'output.zip' 文件
"""
# demo.py
import os
from zipfile import ZipFile
with ZipFile('output.zip', 'w') as handle:
# 首先切到 "唐宋诗词" 的父目录
os.chdir('./aaa/bbb')
# 然后使用相对路径写入
# 注意参数必须是文件的路径, 不能是文件夹路径
# # handle.write('唐宋诗词') # wrong!
handle.write('唐宋诗词/唐诗三百首.txt') # right
handle.write('唐宋诗词/宋词三百首.txt') # right
脚本封装
下面是封装好的脚本, 函数比较直观, 看代码就可以理解用法了:
import os
from zipfile import ZipFile
from lk_utils import findall_files # pip install lk-utils
def pack_file(file_i: str, file_o: str) -> str:
return pack_files([file_i], file_o)
def pack_files(files_i: list, file_o: str) -> str:
backup = os.getcwd()
with ZipFile(os.path.abspath(file_o), 'w') as handle:
for file_i in map(os.path.abspath, files_i):
dir_, filename = os.path.split(file_i)
os.chdir(dir_)
handle.write(filename)
# restore
os.chdir(backup)
return file_o
def pack_dir(dir_i: str, file_o: str) -> str:
return pack_dirs([dir_i], file_o)
def pack_dirs(dirs_i: list, file_o: str) -> str:
backup = os.getcwd()
with ZipFile(os.path.abspath(file_o), 'w') as handle:
for dir_i in map(os.path.abspath, dirs_i):
dir_ii = os.path.dirname(dir_i)
os.chdir(dir_ii)
for file in findall_files(dir_i):
handle.write(os.path.relpath(file, dir_ii))
# restore
os.chdir(backup)
return file_o
if __name__ == '__main__':
pack_file('aaa/bbb/唐宋诗词/唐诗三百首.txt', 'output1.zip')
pack_dir('aaa/bbb/唐宋诗词', 'output2.zip')
来源:https://blog.csdn.net/Likianta/article/details/120259467
标签:Python,zipfile,压缩包
0
投稿
猜你喜欢
Go语言map元素的删除和清空
2024-02-05 10:42:25
个人网站与动网整合非官方方法
2009-07-05 18:42:00
Python内建类型bytes深入理解
2022-11-13 08:35:54
Python assert关键字原理及实例解析
2022-11-12 09:24:10
sql中的常用的字符串处理函数大全
2024-01-19 21:37:41
Python 玩转图像格式转换操作
2022-03-25 23:14:52
Python 操作Excel-openpyxl模块用法实例
2021-01-20 09:29:34
Python中Scrapy+adbapi提高数据库写入效率实现
2024-01-13 14:44:36
python函数默认参数使用避坑指南
2023-06-19 13:37:50
Python如何求取逆序数
2022-07-16 07:16:57
详解Django解决ajax跨域访问问题
2021-10-14 15:34:10
使用Python绘制空气质量日历图
2023-06-20 12:19:21
PHP中最低级别的错误类型总结
2023-09-04 16:46:17
jupyter notebook运行代码没反应且in[ ]没有*
2022-03-06 17:37:39
Python列表生成式与生成器操作示例
2023-08-05 14:16:45
MySQL的之表结构修改
2012-01-05 19:16:17
c#数据库与TXT导入导出的实例
2024-01-24 06:34:16
SQL SERVER 2005中的同步复制技术
2009-01-05 13:44:00
详解python列表生成式和列表生成式器区别
2021-09-13 16:15:14
django使用channels实现通信的示例
2023-12-18 01:06:59