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之Import 模块
Oct 13 Python
Python fileinput模块使用介绍
Nov 30 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python中实现switch功能实例解析
Jan 11 Python
PyQt5每天必学之QSplitter实现窗口分隔
Apr 19 Python
python 在某.py文件中调用其他.py内的函数的方法
Jun 25 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python实现XML解析的方法解析
Nov 16 Python
Python中zipfile压缩文件模块的基本使用教程
Jun 14 Python
一篇文章搞懂python的转义字符及用法
Sep 03 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 inc文件使用的风险和注意事项
2013/11/12 PHP
PHP中创建和验证哈希的简单方法实探
2015/07/06 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP开发制作一个简单的活动日程表Calendar
2016/06/20 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
详解PHP中的8个魔术常量
2020/07/06 PHP
jquery 学习笔记 传智博客佟老师附详细注释
2020/09/12 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
Bootstrap轮播插件使用代码
2016/10/11 Javascript
jQuery的 $.ajax防止重复提交的两种方法(推荐)
2016/10/14 Javascript
完美解决浏览器跨域的几种方法(汇总)
2017/05/08 Javascript
VUE中v-model和v-for指令详解
2017/06/23 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
2017/09/14 Javascript
详解基于Vue/React项目的移动端适配方案
2019/08/23 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
Python实现把数字转换成中文
2015/06/29 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
获取Django项目的全部url方法详解
2017/10/26 Python
利用Python循环(包括while&for)各种打印九九乘法表的实例
2017/11/06 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
Python连接mysql数据库及简单增删改查操作示例代码
2020/08/03 Python
Python文件名匹配与文件复制的实现
2020/12/11 Python
如何在C# winform中异步调用web services
2015/09/21 面试题
一套软件测试笔试题
2014/07/25 面试题
学生鉴定评语大全
2014/05/05 职场文书
运动会拉拉队口号
2014/06/09 职场文书
留学推荐信英文范文
2015/03/26 职场文书
党组织结对共建协议书
2016/03/23 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle
总结Python使用过程中的bug
2021/06/18 Python