#!/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值相关推荐

  1. Linux中压缩和解压(gzip压缩/gunzip解压)(zip压缩/unzip解压)(tar打包解压)

    文章目录 Linux中压缩和解压(gzip压缩/gunzip解压)(zip压缩/unzip解压)(tar打包解压) 一.gzip压缩 / gunzip解压 1.命令 2.注意 3.案例 4.常用 二. ...

  2. python怎么解压rar文件_Python解压 rar、zip、tar文件的方法

    Q1 :如何解压 rar 压缩包文件? A : Step1:检查是否有 rarfile 第三方库,若没有该模块,则需要进行安装 : Step2:参考代码如下: import rarfile impor ...

  3. python打包出现乱码_python解压zip包中文乱码解决方法

    乱码得原因: 由于ZipFile模块导出遇到中文解码不对,windows上会出现,linux是否会出现不知道没测试过. 解决方式: 1. 搞个文件名引射表(不太方便,少量文件夹套用时候还可以) 2. ...

  4. 解压大于4g的文件_python解压压缩包

    压缩包类型:.gz .tar .tgz .zip .rar gz: 即gzip.通常仅仅能压缩一个文件.与tar结合起来就能够实现先打包,再压缩. tar: linux系统下的打包工具.仅仅打包.不压 ...

  5. python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法

    解压大杀器 首先祭出可以应对多种压缩包格式的python库:patool.如果平时只用基本的解压.打包等操作,也不想详细了解各种压缩格式对应的python库,patool应该是个不错的选择. pato ...

  6. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  7. linux jar和zip,Linux命令———zip和jar文件压缩解压

    Linux命令---zip和jar文件压缩解压 (1)ubuntu 使用unzip和zip压缩文件 1.功能作用:解压缩zip文件 2.位置:/usr/bin/unzip 3.格式用法:unzip [ ...

  8. python解压7z文件_Python调用7zip命令实现文件批量解压

    Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...

  9. mac java打包文件_解压MAC压缩的zip文件

    import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import ...

最新文章

  1. presto能连接mysql和hive吗_Presto连接Hive
  2. 《JavaScript高效图形编程(修订版)》——6.10 用画布sprites取代DHTMLsprite
  3. Silverlight4Beta之CompositeTransform
  4. 《移动项目实践》实验报告——Android数据存储
  5. object address data read debug
  6. 毕业设计上线啦!----跳蚤部落与基于Comet的WebIM系统开发
  7. 瓜田老梁:FA1# 微服务流控防护场景与应对措施
  8. PostgrSQL流复制wal异常
  9. mac java连通r_MacOS安装rJava
  10. mysql中group小计与合计_用SQL实现统计报表中的“小计”和“合计”
  11. Go语言练习:网络编程实例——简易图片上传网站
  12. 系统学习NLP(三十二)--BERT、XLNet、RoBERTa、ALBERT及知识蒸馏
  13. 蚂蚁笔记 linux安装教程,简年14:蚂蚁笔记(Leanote)快速部署指南
  14. 民商法领域的论文选题求推荐?
  15. 四种快速简单添加视频字幕的方法,总有一款适合你
  16. 互联网2018校招时间_供参考
  17. 卡内基梅隆大学计算机专业录取难,卡内基梅隆大学申请难度分析
  18. python 做深度学习时偶遇的 (0xC0000409)错误
  19. 计算机内存条只认了一个,怎么解决Win10插入2个4G内存条却只显示4G?
  20. Vue将HTML内容用打印机打印出来

热门文章

  1. 67道 Python自动化面试题
  2. 计算机文件无法显示后缀,但一般情况下电脑默认是看不到文件格式显示(也就是文件扩展名)...
  3. python PyQt5 QtWidgets.QWidget.size()函数 QSize
  4. Intel Realsense D435 在windows系统下运行时请修改相机隐私设置以确保摄像头正常运行(没啥子用,还是掉线)
  5. python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹
  6. spring项目中加载配置文件
  7. JVM中垃圾回收相关算法 - 值得了解一下的,因为早晚得了解
  8. matlab与钻井平台,基于MATLAB环境下采用C8051F060实现钻井井眼姿态监测系统的设计...
  9. linux jdk安装_linux运维 - 用脚本快速安装jdk
  10. linux cached 进程,关于Linux cached内存简析