支持压缩单个文件和多级文件夹

使用方法

zip_compress(to_zip,save_zip_name):#to_zip表示源文件或者源目录,save_zip_name表示目的zip文件(可带目录)

思路:

先判断目的文件目录是否存在,如果不存在,就创建;

判断被压缩的是文件还是目录

如果是文件,直接压缩

如果是目录,遍历后逐一压缩

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import os,zipfile

def zip_compress(to_zip,save_zip_name):#save_zip_name是带目录的,也可以不带就是当前目录

#1.先判断输出save_zip_name的上级是否存在(判断绝对目录),否则创建目录

save_zip_dir=os.path.split(os.path.abspath(save_zip_name))[0]#save_zip_name的上级目录

print(save_zip_dir)

if not os.path.exists(save_zip_dir):

os.makedirs(save_zip_dir)

print('创建新目录%s'%save_zip_dir)

f = zipfile.ZipFile(os.path.abspath(save_zip_name),'w',zipfile.ZIP_DEFLATED)

# 2.判断要被压缩的to_zip是否目录还是文件,是目录就遍历操作,是文件直接压缩

if not os.path.isdir(os.path.abspath(to_zip)):#如果不是目录,那就是文件

if os.path.exists(os.path.abspath(to_zip)):#判断文件是否存在

f.write(to_zip)

f.close()

print('%s压缩为%s' % (to_zip, save_zip_name))

else:

print ('%s文件不存在'%os.path.abspath(to_zip))

else:

if os.path.exists(os.path.abspath(to_zip)):#判断目录是否存在,遍历目录

zipList = []

for dir,subdirs,files in os.walk(to_zip):#遍历目录,加入列表

for fileItem in files:

zipList.append(os.path.join(dir,fileItem))

# print('a',zipList[-1])

for dirItem in subdirs:

zipList.append(os.path.join(dir,dirItem))

# print('b',zipList[-1])

#读取列表压缩目录和文件

for i in zipList:

f.write(i,i.replace(to_zip,''))#replace是减少压缩文件的一层目录,即压缩文件不包括to_zip这个目录

# print('%s压缩到%s'%(i,save_zip_name))

f.close()

print('%s压缩为%s' % (to_zip, save_zip_name))

else:

print('%s文件夹不存在' % os.path.abspath(to_zip))

python生成多级文件夹_Python zipfile压缩文件和文件夹(支持多级目录)相关推荐

  1. python的zipfile压缩文件夹_python zipfile压缩使用说明

    压缩 f=zipfile.ZipFile(file, mode="r", compression=ZIP_STORED, allowZip64=False) 创建一个zip文件对象 ...

  2. 如何在cmd运行python文件夹_python怎么在cmd运行文件夹

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...

  3. 如何用python生成可执行程序必须经过_python怎么生成可执行文件

    .py文件:对于开源项目或62616964757a686964616fe58685e5aeb931333363393664者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的 ...

  4. python打包成pyc文件发布_Python 使用pyinstaller将py文件发布成exe程序

    一. Pyinstaller简介 Python是一个脚本语言,被解释器解释执行.它的发布方式: .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的 ...

  5. linux打压缩包去掉某个文件夹,linux tar压缩排除某个文件夹的方法

    一般直接用tar命令打包很简单,直接使用 tar -zcvf test.tar.gz test 即可. 在很多时候,我们要对某一个目录打包,而这个目录下有几十个子目录和子文件,我们需要在打包的时候排除 ...

  6. linux递归创建文件夹_Python中并发请求创建文件夹带来的线程安全问题

    在我们日常写程序的过程中,免不了与文件系统打交道,各种开发语言都提供了与文件系统交互的指令函数,比如Python中的os模块,就提供了许多这样的指令函数,今天就以创建文件夹为例,来说一下,如果用的不当 ...

  7. python生成随机整数列表_python生成随机整数

    原博文 2019-10-08 11:09 − python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不 ...

  8. python下载文件保存_Python根据URL地址下载文件并保存至对应目录的实现

    引言 在编程中经常会遇到图片等数据集将图片等数据以URL形式存储在txt文档中,为便于后续的分析,需要将其下载下来,并按照文件夹分类存储.本文以Github中Alexander Kim提供的图片分类数 ...

  9. python3 读取文件夹_python读取listPython3如何检查文件或文件夹是否存在?

    如何检查一个文件或者文件夹存在?有几种方法,Python2和Python3版本也有不同,这是在文件操作中常用到的方法,只有文件存在我们才可以继续对文件进行处理,下面总结了常用的检查文件是否存在的方法. ...

最新文章

  1. DNS基础及域名系统架构
  2. 【Python】反转列表 list 的几种方法
  3. Android开发之虹软人脸识别活体检测基本步骤
  4. CodeForces - 1189A ----Keanu Reeves
  5. 前后端分离,如何解决跨域问题
  6. asp.net 将此项目作为引用添加将导致循环依赖项
  7. 智器SmartQ T7历险记
  8. 多余元素删除(多种代码)
  9. css 默认显示滚动条,css控制默认滚动条样式
  10. 各种图片格式综述(转载)
  11. 【正则】1302- 快速上手常用正则表达式
  12. 口袋冒险家如何用电脑玩 口袋冒险家PC电脑版玩法教程
  13. 为你揭露2018微信公开课pro的12个重点
  14. df磁盘容量>>du磁盘容量——磁盘容量告警排查与解决
  15. 基于jsp+mysql+ssm知了堂财务报账管理系统-计算机毕业设计
  16. 更换主板开机logo
  17. Mac推荐视频播放器ElmediaPlayer
  18. oppo版root软件获取,oppo如何获取root
  19. ARChon 分析之五 : chrome-app的开发方法
  20. 终于把 Spring Boot 3.0 写成书了!

热门文章

  1. oracle触发器高级教程
  2. sublime 3114注册码
  3. 高矮不同的人排队问题
  4. 基于Mono跨平台移动应用开发框架发布Xamarin 3.0
  5. 解决ie6、7 margin-bottom 失效问题
  6. 手机被偷后如何让小偷不能用
  7. C++编程语言之Lambda 函数与表达式
  8. bash: make: command not found - 解决办法
  9. CentOS 8.0 今天已正式发布!一起看看有哪些新特性
  10. linux基础命令练习,Linux常用命令练习