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 相关文章推荐
MySQL最常见的操作语句小结
May 07 Python
Python常见异常分类与处理方法
Jun 04 Python
Python内建模块struct实例详解
Feb 02 Python
20个常用Python运维库和模块
Feb 12 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
django 通过URL访问上传的文件方法
Jul 28 Python
python定位xpath 节点位置的方法
Aug 27 Python
python 字符串常用方法汇总详解
Sep 16 Python
python3 求约数的实例
Dec 05 Python
python实现同一局域网下传输图片
Mar 20 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
了解Joomla 这款来自国外的php网站管理系统
2010/03/11 PHP
PHP仿博客园 个人博客(2) 数据库增添改删
2013/07/05 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
[原创]CI(CodeIgniter)简单统计访问人数实现方法
2016/01/19 PHP
php HTML无刷新提交表单
2016/04/05 PHP
laravel 查询数据库获取结果实现判断是否为空
2019/10/24 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
JS中 用户登录系统的解决办法
2013/04/15 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
2015/03/26 Javascript
JS使用正则表达式除去字符串中重复字符的方法
2015/11/05 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
使用 node.js 模仿 Apache 小部分功能
2019/07/07 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
JavaScript实现动态生成表格
2020/08/02 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python实现账号密码输错三次即锁定功能简单示例
2019/03/29 Python
selenium+python环境配置教程详解
2019/05/28 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
Django中使用MySQL5.5的教程
2019/12/18 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python 利用toapi库自动生成api
2020/10/19 Python
HTML5 图片悬停放大的实现代码示例
2019/12/04 HTML / CSS
数控专业毕业生求职信
2014/06/12 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
个人委托书范文
2015/01/28 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
实习证明格式范文
2015/06/16 职场文书
Java实现贪吃蛇游戏的示例代码
2022/09/23 Java/Android