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 __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
python抓取网页中链接的静态图片
Jan 29 Python
python 通过logging写入日志到文件和控制台的实例
Apr 28 Python
tensorflow 获取变量&打印权值的实例讲解
Jun 14 Python
在PyCharm中实现关闭一个死循环程序的方法
Nov 29 Python
详解Python_shutil模块
Mar 15 Python
Python3中列表list合并的四种方法
Apr 19 Python
解决Django加载静态资源失败的问题
Jul 28 Python
Python学习笔记之Break和Continue用法分析
Aug 14 Python
关于numpy中eye和identity的区别详解
Nov 29 Python
实现Python与STM32通信方式
Dec 18 Python
Python实现JS解密并爬取某音漫客网站
Oct 23 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/12/06 PHP
php基础学习之变量的使用
2011/06/09 PHP
php 判断访客是否为搜索引擎蜘蛛的函数代码
2011/07/29 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
thinkphp 框架数据库切换实现方法分析
2020/05/18 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
js实时监听文本框状态的方法
2011/04/26 Javascript
javascript实现数字+字母验证码的简单实例
2014/02/10 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
基于Bootstrap实现tab标签切换效果
2020/04/15 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
整理Python 常用string函数(收藏)
2016/05/30 Python
玩转python selenium鼠标键盘操作(ActionChains)
2020/04/12 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python文件读写常见用法总结
2019/02/22 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python 用matplotlib画以时间日期为x轴的图像
2019/08/06 Python
Python学习笔记之迭代器和生成器用法实例详解
2019/08/08 Python
flask利用flask-wtf验证上传的文件的方法
2020/01/17 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
关于Kotlin中SAM转换的那些事
2020/09/15 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
Expedia爱尔兰:酒店、机票、租车及廉价假期
2017/01/02 全球购物
德国2018年度最佳在线药房:Bodfeld Apotheke
2019/11/04 全球购物
《老山界》教学反思
2014/04/08 职场文书
房屋所有权证明
2014/10/20 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
2016党校培训心得体会
2016/01/07 职场文书
PHP实现考试倒计时功能代码
2021/04/16 PHP
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang