Python 标准库zipfile将文件夹加入压缩包的操作方法
短信预约 -IT技能 免费直播动态提醒
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')
到此这篇关于Python 标准库 zipfile 将文件夹加入压缩包的操作方法的文章就介绍到这了,更多相关Python zipfile压缩包内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341