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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
浅谈Python实现Apriori算法介绍
Dec 20 Python
使用Python做垃圾分类的原理及实例代码附源码
Jul 02 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
Python 装饰器原理、定义与用法详解
Dec 07 Python
python小项目之五子棋游戏
Dec 26 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
openCV提取图像中的矩形区域
Jul 21 Python
通俗易懂了解Python装饰器原理
Sep 17 Python
Python实现Appium端口检测与释放的实现
Dec 31 Python
Python实现抖音热搜定时爬取功能
Mar 16 Python
pytorch实现加载保存查看checkpoint文件
Jul 15 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 calender(日历)二个版本代码示例(解决2038问题)
2013/12/24 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
2016/05/13 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
js汉字排序问题 支持中英文混排,兼容各浏览器,包括CHROME
2011/12/20 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
JavaScript DOM 对象深入了解
2016/07/20 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
jQuery滚动监听实现商城楼梯式导航效果
2017/03/06 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
2018/06/26 Javascript
详解从NodeJS搭建中间层再谈前后端分离
2018/11/13 NodeJs
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
基于javascript canvas实现五子棋游戏
2020/07/08 Javascript
python之import机制详解
2014/07/03 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
selenium+python实现自动化登录的方法
2018/09/04 Python
python 将json数据提取转化为txt的方法
2018/10/26 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
报到证丢失证明
2014/01/11 职场文书
会计学自我鉴定
2014/02/06 职场文书
新年爱情寄语
2014/04/08 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
博士论文答辩开场白
2015/06/01 职场文书
总经理聘用协议书
2015/09/21 职场文书
python geopandas读取、创建shapefile文件的方法
2021/06/29 Python
python神经网络 使用Keras构建RNN训练
2022/05/04 Python