一、python压缩代码:
import os
import datetime
from zipfile import ZipFile
import zipfile
from os import listdir
from os.path import isfile,isdir,join
path_local = 'G:/test' #本地需要压缩的文件
path_local_zip = 'G:/zip' #本地压缩后的文件存放位置
path_zip=path_local_zip+'/'+'2019-02-25.zip' #压缩后的文件命名名称
path_list = [] #文件路径存入path_list
dir_list = [] #将文件名称存入dir_list
dirs = os.listdir(path_local.decode('utf8'))
print "Compressing ..."+path_zip.decode('utf8')
for dir in dirs:
# 将前一天日期为前缀的所有文件夹提取出,将文件路径存入path_list,将文件名称存入dir_list
if dir.startswith('2019-02-25'):
path_list.append((path_local.decode('utf8')+'/'+dir))
dir_list.append(dir)
for i in range(len(path_list)):
# 压缩
zipCompress(path_list[i],dir_list[i],path_zip.decode('utf8'))
print("size:" + str(get_FileSize(changePath(path_zip.decode('utf8')))) + "MB")
print "compress success"
# 其中path_local.decode('utf8')是防止出现中文路径乱码
压缩功能:
def zipCompress(srcDir,dir_name,desZipfile):
fp=zipfile.ZipFile(desZipfile, 'a', zipfile.ZIP_DEFLATED)
addFileIntoZipfile(srcDir,dir_name,fp)
fp.close()
def addFileIntoZipfile(srcDir,dir_name,fp):
for dir_filename in listdir(srcDir):
subpath=join(srcDir,dir_filename)
if isfile(subpath):
fp.write(subpath,dir_name+'/'+dir_filename)
elif isdir(subpath):
fp.write(subpath)
addFileIntoZipfile(subpath,fp)
文件绝对路径添加转义符
def changePath(filePath):
path = ""
for i in range(len(filePath)):
if filePath[i] != "\\":
path += filePath[i]
else:
path += "/"
return path
获取文件的大小,结果保留两位小数,单位为MB
def get_FileSize(filePath):
fsize = os.path.getsize(filePath)
fsize = fsize/float(1024*1024)
return round(fsize,2)
二、python解压缩代码:
from zipfile import ZipFile
import zipfile
path_local_zip = 'G:/zip' #压缩文件路径
path_local = 'G:/test2' #解压后的文件存放路径
print "decompress ..."
deCompression('2019-02-25.zip')
print "decompress success"
解压功能:
def deCompression(zip_name):
z = zipfile.ZipFile(path_local_zip+'/'+zip_name, 'r')
z.extractall(path=changePath(path_local+'/'+'2019-02-25')) #将解压后的文件目录重新命名
z.close()