python3实现的zip格式压缩文件夹操作示例


Posted in Python onAugust 17, 2019

本文实例讲述了python3实现的zip格式压缩文件夹操作。分享给大家供大家参考,具体如下:

思路:先把第一级目录中的文件进行遍历,如果是文件,则把它连同当前路径一起加入result(list),如果是子目录,则在整个目录上继续深度优先遍历,直到所有的文件都被加入。主要使用python3中zipfile模块:

class zipfile.ZipFile(file [,mode [,compression [,allowZip64 ] ] ] )

参数说明:

1.第一个参数file可以是文件(字符串)的路径,也可以是类文件对象

2.第二个参数mode模式参数可以是'r'读取现有的文件,'w'以截断并写入一个新的文件,或'a'将追加到现有文件。如果mode是'a'和file引用现有的ZIP文件,则会向其中添加其他文件,如果文件未引用ZIP文件,则会将新的ZIP存档附加到该文件,这用于将ZIP存档添加到另一个文件

3.第三个参数compression是编写存档时使用的ZIP压缩方法,可以是ZIP_STORED或ZIP_DEFLATED

Demo:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os
import zipfile
def get_zip_file(input_path, result):
  """
  对目录进行深度优先遍历
  :param input_path:
  :param result:
  :return:
  """
  files = os.listdir(input_path)
  for file in files:
    if os.path.isdir(input_path + '/' + file):
      get_zip_file(input_path + '/' + file, result)
    else:
      result.append(input_path + '/' + file)
def zip_file_path(input_path, output_path, output_name):
  """
  压缩文件
  :param input_path: 压缩的文件夹路径
  :param output_path: 解压(输出)的路径
  :param output_name: 压缩包名称
  :return:
  """
  f = zipfile.ZipFile(output_path + '/' + output_name, 'w', zipfile.ZIP_DEFLATED)
  filelists = []
  get_zip_file(input_path, filelists)
  for file in filelists:
    f.write(file)
  # 调用了close方法才会保证完成压缩
  f.close()
  return output_path + r"/" + output_name
if __name__ == '__main__':
  zip_file_path(r"./testing", 'F:', '123.zip')

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python发送邮件接收邮件示例分享
Jan 21 Python
使用Python编写Linux系统守护进程实例
Feb 03 Python
Python Tkinter GUI编程入门介绍
Mar 10 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
Mar 13 Python
Python+django实现简单的文件上传
Aug 17 Python
python获取Linux发行版名称
Aug 30 Python
python中删除某个元素的方法解析
Nov 05 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
python右对齐的实例方法
Jul 05 Python
Python异常处理机制结构实例解析
Jul 23 Python
如何使用python自带IDLE的几种方法
Oct 10 Python
django 通过url实现简单的权限控制的例子
Aug 16 #Python
对Django中内置的User模型实例详解
Aug 16 #Python
对Django中的权限和分组管理实例讲解
Aug 16 #Python
django创建最简单HTML页面跳转方法
Aug 16 #Python
在django中实现页面倒数几秒后自动跳转的例子
Aug 16 #Python
解决python3 安装不了PIL的问题
Aug 16 #Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 #Python
You might like
php定时删除文件夹下文件(清理缓存文件)
2013/01/23 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
[原创]PHPCMS遭遇会员投稿审核无效的解决方法
2017/01/11 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
event.srcElement 用法笔记e.target
2009/12/18 Javascript
javascript获取当前日期时间及其它操作函数
2011/01/11 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
javascript实现简单的贪吃蛇游戏
2015/03/31 Javascript
JS实现淡蓝色简洁竖向Tab点击切换效果
2015/10/06 Javascript
基于JavaScript实现移动端TAB触屏切换效果
2015/10/20 Javascript
JSON 的正确用法探讨:Pyhong、MongoDB、JavaScript与Ajax
2016/05/15 Javascript
Angularjs---项目搭建图文教程
2016/07/08 Javascript
javascript this详细介绍
2016/09/19 Javascript
基于Node.js + WebSocket打造即时聊天程序嗨聊
2016/11/29 Javascript
JavaScript实现三级联动菜单实例代码
2017/06/26 Javascript
基于vue.js中关于下拉框的值默认及绑定问题
2018/08/22 Javascript
vue 解决循环引用组件报错的问题
2018/09/06 Javascript
优雅的在React项目中使用Redux的方法
2018/11/10 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
Python WEB应用部署的实现方法
2019/01/02 Python
python中eval与int的区别浅析
2019/08/11 Python
NumPy中的维度Axis详解
2019/11/26 Python
使用python采集Excel表中某一格数据
2020/05/14 Python
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
《童年》教学反思
2014/02/18 职场文书
大学军训感言1000字
2014/02/25 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
【海涛解说】暗牧也疯狂,牛蛙成配角
2022/04/01 DOTA
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers