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开发实例分享bt种子爬虫程序和种子解析
May 21 Python
Python3中常用的处理时间和实现定时任务的方法的介绍
Apr 07 Python
一个基于flask的web应用诞生 组织结构调整(7)
Apr 11 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
Python 字符串转换为整形和浮点类型的方法
Jul 17 Python
python仿抖音表白神器
Apr 08 Python
python的mysql数据库建立表与插入数据操作示例
Sep 30 Python
如何解决django-celery启动后迅速关闭
Oct 16 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
Python实现简单的猜单词小游戏
Oct 28 Python
Django集成MongoDB实现过程解析
Dec 01 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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生成curl命令行的方法
2015/12/14 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
yii插入数据库防并发的简单代码
2017/05/27 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
使用js实现一个可编辑的select下拉列表
2014/02/20 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
javascript下拉框选项单击事件的例子分享
2015/03/04 Javascript
javascript实现给定半径求出圆的面积
2015/06/26 Javascript
node模块机制与异步处理详解
2016/03/13 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
概述BootStrap中role="form"及role作用角色
2016/12/08 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
JS实现图片放大镜插件详解
2017/11/06 Javascript
利用SpringMVC过滤器解决vue跨域请求的问题
2018/02/10 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
Python Sqlite3以字典形式返回查询结果的实现方法
2016/10/03 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
2020/02/27 Python
python利用tkinter实现图片格式转换的示例
2020/09/28 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
预防艾滋病宣传标语
2014/06/25 职场文书
大学军训的体会
2014/11/08 职场文书
给老师的一封感谢信
2015/01/20 职场文书
鲁迅故居导游词
2015/02/05 职场文书
2015年光棍节活动总结
2015/03/24 职场文书
婚礼家长致辞
2015/07/27 职场文书
《别在吃苦的年纪选择安逸》读后感3篇
2019/11/30 职场文书
Springboot使用Spring Data JPA实现数据库操作
2021/06/30 Java/Android
新手初学Java List 接口
2021/07/07 Java/Android
Python中的turtle画箭头,矩形,五角星
2022/03/16 Python