python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值
#!/usr/bin/env python
#_*_encoding:utf-8
# 2018/05/29
#augustyang
#2.0
'''
解压文件,合并文件 打包成zip格式文件 生成MD5值
'''
import zipfile
import os
import shutil
import time
import hashlib
file_dir= r"C:\Users\august\Desktop\新建文件夹 (3)"
slice1 = slice(0,2) #取2级文件夹
ll_test = [] #存放解压好的各层子目录 [['release'], ['HotfixRoot'], ['Gamei'], ['2.90'], ['Iphone'], []]
def Get_address(file_dir): #获取每个zip文件的绝对地址
list_1 = []
for root, dirs, files in os.walk(file_dir):
for fn in files:
if fn.endswith(".zip"):
list_1.append(file_dir+os.sep+fn)
return list_1
def un_zip(file_name): #解压zip文件
"""unzip zip file"""
zip_file = zipfile.ZipFile(file_name)
if os.path.isdir(file_name+'_files'):
pass
else:
os.mkdir(file_name+'_files')
for names in zip_file.namelist():
zip_file.extract(names, file_name + "_files/")
zip_file.close()
return (file_name +'_files')
#找到解压的目录
def func(dir):
list_1 = []
for root, dirs, files in os.walk(dir):
list_1.append(dirs)
return os.path.join(file_dir,list_1[0][0])
def mk_dir(dir): #创建slice1层文件夹
for root, dirs, files in os.walk(dir):
ll_test.append(dirs)
test1 = ''
for i in ll_test[slice1]:
test1 = os.path.join(test1,i[0])
dir_name = test1 + '\\'
return dir_name
def copytree(src, dst, symlinks=False, ignore=None): #合并文件
for item in os.listdir(src):
s = os.path.join(src, item)
d = os.path.join(dst, item)
if os.path.isdir(s):
shutil.copytree(s, d, symlinks, ignore)
else:
shutil.copy2(s, d)
def rm_dirs(path): #删除目录
ls = os.listdir(path)
for i in ls:
c_path = os.path.join(path,i)
if os.path.isdir(c_path):
if shutil.rmtree(c_path) == None:
print ('删除成功')
def archive_file_zip(source_dir, output_filename): #打包成zip包
zipf = zipfile.ZipFile(output_filename, 'w')
pre_len = len(os.path.dirname(source_dir))
for parent, dirnames, filenames in os.walk(source_dir):
for filename in filenames:
pathfile = os.path.join(parent, filename)
arcname = pathfile[pre_len:].strip(os.path.sep)
zipf.write(pathfile, arcname)
zipf.close()
def GetFileMd5(filename): #产生MD5值
if not os.path.isfile(filename):
return
myhash = hashlib.md5()
f = open(filename,'rb')
while True:
b = f.read(1024)
if not b :
break
myhash.update(b)
f.close()
return myhash.hexdigest()
if __name__ =="__main__":
rm_dirs(file_dir)
l_list = []
for i in Get_address(file_dir):
old_filename = un_zip(i)
l_list.append(old_filename)
ll = mk_dir(func(file_dir)) #创建slice1层文件夹
for i in l_list:
copytree(i+'\\'+ll,file_dir+'\\'+ll)
now_time = time.strftime("%Y_%m_%d_%H_%M",time.localtime()) #时间
file_dir_zip = ll.split(os.sep)[0]
file_name = 'kitty_client_CDN_'+now_time+'.zip'
archive_file_zip(os.path.join(file_dir,file_dir_zip),os.path.join(file_dir,file_name))
print(file_name,'MD5值为:',GetFileMd5(os.path.join(file_dir,file_name)))
删除成功
删除成功
删除成功
kitty_client_CDN_2018_05_29_20_17.zip MD5值为: f2409e4f802eb82a1fd118ca6b76b866
python打包zip文件_python 解压文件,合并文件 打包成zip格式文件 生成MD5值相关推荐
- Linux中压缩和解压(gzip压缩/gunzip解压)(zip压缩/unzip解压)(tar打包解压)
文章目录 Linux中压缩和解压(gzip压缩/gunzip解压)(zip压缩/unzip解压)(tar打包解压) 一.gzip压缩 / gunzip解压 1.命令 2.注意 3.案例 4.常用 二. ...
- python怎么解压rar文件_Python解压 rar、zip、tar文件的方法
Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...
- python打包出现乱码_python解压zip包中文乱码解决方法
乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...
- 解压大于4g的文件_python解压压缩包
压缩包类型:.gz .tar .tgz .zip .rar gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. tar: linux系统下的打包工具.仅仅打包.不压 ...
- python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法
解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...
- 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )
文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...
- linux jar和zip,Linux命令———zip和jar文件压缩解压
Linux命令---zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件 1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [ ...
- python解压7z文件_Python调用7zip命令实现文件批量解压
Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...
- mac java打包文件_解压MAC压缩的zip文件
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...
最新文章
- presto能连接mysql和hive吗_Presto连接Hive
- 《JavaScript高效图形编程(修订版)》——6.10 用画布sprites取代DHTMLsprite
- Silverlight4Beta之CompositeTransform
- 《移动项目实践》实验报告——Android数据存储
- object address data read debug
- 毕业设计上线啦!----跳蚤部落与基于Comet的WebIM系统开发
- 瓜田老梁:FA1# 微服务流控防护场景与应对措施
- PostgrSQL流复制wal异常
- mac java连通r_MacOS安装rJava
- mysql中group小计与合计_用SQL实现统计报表中的“小计”和“合计”
- Go语言练习:网络编程实例——简易图片上传网站
- 系统学习NLP(三十二)--BERT、XLNet、RoBERTa、ALBERT及知识蒸馏
- 蚂蚁笔记 linux安装教程,简年14:蚂蚁笔记(Leanote)快速部署指南
- 民商法领域的论文选题求推荐?
- 四种快速简单添加视频字幕的方法,总有一款适合你
- 互联网2018校招时间_供参考
- 卡内基梅隆大学计算机专业录取难,卡内基梅隆大学申请难度分析
- python 做深度学习时偶遇的 (0xC0000409)错误
- 计算机内存条只认了一个,怎么解决Win10插入2个4G内存条却只显示4G?
- Vue将HTML内容用打印机打印出来
热门文章
- 67道 Python自动化面试题
- 计算机文件无法显示后缀,但一般情况下电脑默认是看不到文件格式显示(也就是文件扩展名)...
- python PyQt5 QtWidgets.QWidget.size()函数 QSize
- Intel Realsense D435 在windows系统下运行时请修改相机隐私设置以确保摄像头正常运行(没啥子用,还是掉线)
- python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹
- spring项目中加载配置文件
- JVM中垃圾回收相关算法 - 值得了解一下的,因为早晚得了解
- matlab与钻井平台,基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计...
- linux jdk安装_linux运维 - 用脚本快速安装jdk
- linux cached 进程,关于Linux cached内存简析