QPython 3C 操作 压缩包
# zipfile 压缩文件夹
import os,shutil,zipfile #引入zip管理模块
isdir=os.path.isdir
listdir=os.listdir
Join=os.path.join
getcwd=os.getcwd
def ZipFiles(absDir,absZipFile=None,PathType=0,Print=1):
#主函数:参数分别是 源文件夹绝对路径,目标压缩文件绝对路径,目标压缩文件里_路径类型_(默认0=源文件夹_下级路径,1=源文件夹_本级路径,2=文件系统_根路径,-1=源文件夹_下级路径_二次压缩),打印具体信息
global absDirLen,prt
if not absZipFile:
absZipFile=absDir+'.zip'
OriPath=getcwd()
if PathType==1:
newDir=absDir[:absDir.rfind('/')]
elif PathType==2:
absDirLen=0
else:
newDir=absDir
if PathType<2:
absDirLen=len(newDir)+1
os.chdir(newDir)
if PathType<0:
ZipCompress=zipfile.ZIP_STORED
else:
ZipCompress=zipfile.ZIP_DEFLATED
Zipfile=zipfile.ZipFile(absZipFile,"w",ZipCompress)
#创建zip文件。参数w表示写模式。zipfile.ZIP_DEFLATED表示需要压缩,文件会变小。ZIP_STORED是单纯的复制,文件大小没变。
if Print:
prt=print
else:
prt=lambda s:None
prt('<创建文件" %s "成功,开始压缩>'%absZipFile)
writeAllFileToZip(absDir,Zipfile) #开始压缩
Zipfile.close()
if PathType<0:
prt('<进行二级压缩>')
os.chdir(os.path.dirname(absZipFile))
Zipfile=zipfile.ZipFile(absZipFile+'.zip',"w",zipfile.ZIP_DEFLATED)
Zipfile.write(os.path.basename(absZipFile))
Zipfile.close()
shutil.move(absZipFile+'.zip',absZipFile)
os.chdir(OriPath)
prt("<压缩成功>")
#定义一个函数,递归读取absDir文件夹中所有文件,并塞进absZipFile文件中。
def writeAllFileToZip(absDir,Zipfile):
global absDirLen,prt
for f in listdir(absDir):
absFile=Join(absDir,f) #子文件的绝对路径
relFile=absFile[absDirLen:] #改成相对路径,否则解压zip是/User/xxx开头的文件。
prt(relFile)
try:
Zipfile.write(relFile)
except ValueError:
#空白时间文件,重写后继续
shutil.copy(relFile,relFile+'_')
shutil.move(relFile+'_',relFile)
Zipfile.write(relFile)
if isdir(absFile): #判断是文件夹,继续深度读取。递归操作
writeAllFileToZip(absFile,Zipfile)
return
absDirLen=prt=-1
__all__=('ZipFiles','os','shutil','zipfile')
# zipfile 解压文件夹
import zipfile
def unZipFiles(src,dst=None):
if dst==None:
if src[-4:].lower()=='.zip':
dst=src[:-4]
else:
return
zipfile.ZipFile(src,'r').extractall(dst)
# 7z 压缩文件夹
import os
os.system("7z a '%s' '%s'"%(destFile目标压缩文件,srcFolder源文件夹))
# 7z 压缩文件夹(带密码,加密文件名)
import os
os.system("7z a '%s' '%s' -p'%s' -mhe"%(destFile目标压缩文件,srcFolder源文件夹,passWord密码))
# 7z 解压文件夹
import os
os.system("7z x -o'%s' '%s'"%(destFolder目标文件夹,srcFile源压缩文件))
# 7z 解压文件夹(带密码)
import os
os.system("7z x -o'%s' '%s' -p'%s'"%(destFolder目标文件夹,srcFile源压缩文件,passWord密码))
# 7z 视频演示: https://www.bilibili.com/video/BV1TV411s7VZ
作者:乘着船@Bilibili
更多文章+下载链接:https://www.bilibili.com/read/readlist/rl321663