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 07 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
django连接oracle时setting 配置方法
Aug 29 Python
TensorFlow查看输入节点和输出节点名称方式
Jan 04 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
Keras设置以及获取权重的实现
Jun 19 Python
pytorch cuda上tensor的定义 以及减少cpu的操作详解
Jun 23 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 Python
matplotlib之pyplot模块实现添加子图subplot的使用
Apr 25 Python
opencv读取视频并保存图像的方法
Jun 04 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
php字符串分割函数用法实例
2015/03/17 PHP
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
jquery $("#variable") 循环改变variable的值示例
2014/02/23 Javascript
javascript学习笔记--数字格式类型
2014/05/22 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
浅谈javascript事件取消和阻止冒泡
2015/05/26 Javascript
js实现的黑背景灰色二级导航菜单效果代码
2015/08/24 Javascript
JS实现弹性漂浮效果的广告代码
2015/09/02 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
js+canvas绘制五角星的方法
2016/01/28 Javascript
jQuery实现的多张图无缝滚动效果【测试可用】
2016/09/12 Javascript
Linux CentOS系统下安装node.js与express的方法
2017/04/01 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
2018/06/28 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python语言的变量认识及操作方法
2018/02/11 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
在Python中使用defaultdict初始化字典以及应用方法
2018/10/31 Python
Selenium之模拟登录铁路12306的示例代码
2020/07/31 Python
如何真正的了解python装饰器
2020/08/14 Python
举例讲解Python装饰器
2020/12/24 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
离婚协议书范本
2015/01/26 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
2016年度基层党建工作公开承诺书
2016/03/25 职场文书
PHP解决高并发问题
2021/04/01 PHP
如何利用Python实现一个论文降重工具
2021/07/09 Python
深入讲解Vue中父子组件通信与事件触发
2022/03/22 Vue.js