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基础教程之自定义函数介绍
Aug 29 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python使用pygame模块编写俄罗斯方块游戏的代码实例
Dec 08 Python
浅谈python新手中常见的疑惑及解答
Jun 14 Python
在Python中执行系统命令的方法示例详解
Sep 14 Python
Python中static相关知识小结
Jan 02 Python
python算法与数据结构之冒泡排序实例详解
Jun 22 Python
pybind11在Windows下的使用教程
Jul 04 Python
python3多线程知识点总结
Sep 26 Python
解决Tensorflow 内存泄露问题
Feb 05 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
关于pytest结合csv模块实现csv格式的数据驱动问题
May 30 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 根据IP地址控制访问的代码
2010/04/22 PHP
关于crontab的使用详解
2013/06/24 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
thinkPHP5.0框架独立配置与动态配置方法
2017/03/17 PHP
Yii框架批量插入数据扩展类的简单实现方法
2017/05/23 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
js 数组操作之pop,push,unshift,splice,shift
2014/01/29 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
jQuery中next方法用法实例
2015/04/24 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
2016/06/12 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
js使用swiper实现层叠轮播效果实例代码
2018/12/12 Javascript
微信小程序实现同时上传多张图片
2020/02/03 Javascript
jQuery中getJSON跨域原理的深入讲解
2020/09/02 jQuery
Python json 错误xx is not JSON serializable解决办法
2017/03/15 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
python 利用栈和队列模拟递归的过程
2018/05/29 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
2019/06/27 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
出生医学证明样本
2014/01/17 职场文书
董事长秘书职责
2014/01/31 职场文书
运动会邀请函范文
2014/01/31 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2016年社区服务活动总结
2016/04/06 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL
golang操作redis的客户端包有多个比如redigo、go-redis
2022/04/14 Golang