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 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
Django中反向生成models.py的实例讲解
May 30 Python
python获取时间及时间格式转换问题实例代码详解
Dec 06 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
11个Python Pandas小技巧让你的工作更高效(附代码实例)
Apr 30 Python
Python函数参数匹配模型通用规则keyword-only参数详解
Jun 10 Python
Python生成一个迭代器的实操方法
Jun 18 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
打包PyQt5应用时的注意事项
Feb 14 Python
Python @property及getter setter原理详解
Mar 31 Python
Django扫码抽奖平台的配置过程详解
Jan 14 Python
Python 多线程处理任务实例
Nov 07 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把JPEG图片转换成Progressive JPEG的方法
2014/06/30 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
2015/12/20 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
TP5框架实现一次选择多张图片并预览的方法示例
2020/04/04 PHP
jQuery选择器全面总结
2014/01/06 Javascript
使用jquery+CSS实现控制打印样式
2014/12/31 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
JS 实现百度搜索功能
2018/02/01 Javascript
webpack4 CSS Tree Shaking的使用
2018/09/03 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
three.js利用gpu选取物体并计算交点位置的方法示例
2019/11/25 Javascript
实例Python处理XML文件的方法
2015/08/31 Python
numpy排序与集合运算用法示例
2017/12/15 Python
python中单例常用的几种实现方法总结
2018/10/13 Python
Python跳出多重循环的方法示例
2019/07/03 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python turtle绘画象棋棋盘
2019/08/21 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
pandas apply多线程实现代码
2020/08/17 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
HTML页面中添加Canvas标签示例
2015/01/01 HTML / CSS
英国最大的美妆产品在线零售商之一:Beauty Bay
2017/09/29 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
实习护理工作自我评价
2013/09/25 职场文书
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
主办会计岗位职责
2014/03/13 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
跟班学习心得体会(共6篇)
2016/01/23 职场文书