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的subprocess模块总结
Nov 07 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
使用Python横向合并excel文件的实例
Dec 11 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
python数据预处理 :数据抽样解析
Feb 24 Python
python实现提取COCO,VOC数据集中特定的类
Mar 10 Python
jupyter 实现notebook中显示完整的行和列
Apr 09 Python
python 3.8.3 安装配置图文教程
May 21 Python
python实现发送邮件
Mar 02 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 缓冲的免费实现方法
2006/10/09 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
抽出www.templatemonster.com的鼠标悬停加载大图模板的代码
2007/07/11 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
在JavaScript中typeof的用途介绍
2013/04/11 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
Javascript中arguments对象的详解与使用方法
2016/10/04 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
Bootstrap按钮组实例详解
2017/07/03 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
修改node.js默认的npm安装目录实例
2018/05/15 Javascript
webstorm中配置nodejs环境及npm的实例
2018/05/15 NodeJs
Vue 全局loading组件实例详解
2018/05/29 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[01:32]dota2拉比克至宝(222)
2018/12/20 DOTA
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
利用python库在局域网内传输文件的方法
2018/06/04 Python
Python统计分析模块statistics用法示例
2019/09/06 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
Django操作session 的方法
2020/03/09 Python
详解python tkinter 图片插入问题
2020/09/03 Python
python3 re返回形式总结
2020/11/20 Python
用python读取xlsx文件
2020/12/17 Python
澳大利亚天然护肤品、化妆品和健康产品一站式商店:Nourished Life
2018/12/02 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
高中生的自我鉴定范文
2014/01/24 职场文书
户外活动策划方案
2014/03/12 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书