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使用心得之获得github代码库列表
Jun 25 Python
用Python实现协同过滤的教程
Apr 08 Python
Python爬取当当、京东、亚马逊图书信息代码实例
Dec 09 Python
cmd运行python文件时对结果进行保存的方法
May 16 Python
Python txt文件加入字典并查询的方法
Jan 15 Python
Python多线程原理与用法实例剖析
Jan 22 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
django rest framework 实现用户登录认证详解
Jul 29 Python
python3 assert 断言的使用详解 (区别于python2)
Nov 27 Python
多个python文件调用logging模块报错误
Feb 12 Python
python实现批量转换图片为黑白
Jun 16 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
PHP的curl实现get,post和cookie(实例介绍)
2013/06/17 PHP
php命名空间学习详解
2014/02/27 PHP
PHP图片处理之图片背景、画布操作
2014/11/19 PHP
PHP单例模式简单用法示例
2017/06/23 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
js限制文本框为整数和货币的函数代码
2010/10/13 Javascript
文本域中换行符的替换示例
2014/03/04 Javascript
jQuery CSS()方法改变现有的CSS样式表
2014/09/09 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
2016/01/08 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
VueCli生产环境打包部署跨域失败的解决
2020/11/13 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[57:24]LGD vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现的求解最大公约数算法示例
2018/05/03 Python
如何使用Python 打印各种三角形
2019/06/28 Python
python二维键值数组生成转json的例子
2019/12/06 Python
Python正则表达式学习小例子
2020/03/03 Python
python3.7调试的实例方法
2020/07/21 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
联想德国官网:Lenovo Germany
2018/07/04 全球购物
献爱心捐款倡议书
2014/05/14 职场文书
三分钟自我介绍演讲稿
2014/08/21 职场文书
庆七一宣传标语
2014/10/08 职场文书
辞职信标准格式
2015/02/27 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
redis限流的实际应用
2021/04/24 Redis