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中反射用法实例
Mar 27 Python
使用Eclipse如何开发python脚本
Apr 11 Python
python requests.post带head和body的实例
Jan 02 Python
Python设计模式之代理模式实例详解
Jan 19 Python
numpy基础教程之np.linalg
Feb 12 Python
pyqt5实现登录界面的模板
May 30 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
Python实现时间序列可视化的方法
Aug 06 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
Aug 30 Python
基于pycharm实现批量修改变量名
Jun 02 Python
Python面向对象之成员相关知识总结
Jun 24 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 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
Windows下的PHP5.0详解
2006/11/18 PHP
五款常用mysql slow log分析工具的比较分析
2011/05/22 PHP
php中截取中文字符串的代码小结
2011/07/17 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
Laravel框架路由管理简单示例
2019/05/07 PHP
javascript编程起步(第三课)
2007/02/27 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
JavaScript toUpperCase()方法使用详解
2016/08/26 Javascript
AngularJS模仿Form表单提交的实现代码
2016/12/08 Javascript
AngularJS入门教程之Helloworld示例
2016/12/25 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
2017/08/14 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[10:24]郎朗助力完美“圣”典,天籁交织奏响序曲
2016/12/18 DOTA
python 控制语句
2011/11/03 Python
Python中的闭包总结
2014/09/18 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Django框架验证码用法实例分析
2019/05/10 Python
python用什么编辑器进行项目开发
2020/06/17 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
入党自我评价优缺点
2014/01/25 职场文书
医学生自我鉴定范文
2014/03/26 职场文书
2014年社区计生工作总结
2014/11/18 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书