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 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Python对excel文档的操作方法详解
Dec 10 Python
简单介绍python封装的基本知识
Aug 10 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
Python datetime包函数简单介绍
Aug 28 Python
如何利用python给图片添加半透明水印
Sep 06 Python
Python安装whl文件过程图解
Feb 18 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
使用Pycharm(Python工具)新建项目及创建Python文件的教程
Apr 26 Python
基于python连接oracle导并出数据文件
Apr 28 Python
Python实现冒泡排序算法的完整实例
Nov 04 Python
Python代码风格与编程习惯重要吗?
Jun 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
PL-880隐藏功能
2021/03/01 无线电
PHP的FTP学习(二)
2006/10/09 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP实现算式验证码和汉字验证码实例
2015/03/09 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
[01:07]2015国际邀请赛 中国区预选赛精彩回顾
2015/06/15 DOTA
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python使用Supervisor来管理进程的方法
2015/05/28 Python
Python六大开源框架对比
2015/10/19 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
django 发送手机验证码的示例代码
2018/04/25 Python
查找python项目依赖并生成requirements.txt的方法
2018/07/10 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
Python中zip()函数的简单用法举例
2019/09/02 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
python中什么是面向对象
2020/06/11 Python
CSS3模块的目前的状况分析
2010/02/24 HTML / CSS
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
记帐员岗位责任制
2014/02/08 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2014年话务员工作总结
2014/11/19 职场文书
实用干货:敬酒词大全,帮你应付各种场合
2019/11/21 职场文书
手残删除python之后的补救方法
2021/06/26 Python