python读取rar文件_python解压缩rar,zip文件的正确姿势

import rarfile,zipfile,os,shutilfrompathlib import Path

basePath='d:/basePath'outPath='d:/outPath'passlist=[]

with open('pass.txt','r') asf:for line inf.readlines():

passlist.append(line.rstrip())for root,dirs,fs inos.walk(basePath):for f infs:

filename=os.path.join(root,f)

type=os.path.splitext(filename)[-1][1:]if type=='rar':

fileget=rarfile.RarFile(filename)

with filegetasrf:ifrf.needs_password():#判断是否需要密码for pwds inpasslist:try:

fileget.extractall(outPath,pwd=pwds.encode())#不要直接用pwds,要编码一下

print(filename+":"+pwds)

except:

passelse:

fileget.extractall(outPath)

elif type=='zip':

with zipfile.ZipFile(filename,'r') aszf:for info inzf.infolist():try:

newname=info.filename.encode('cp437').decode('gbk');

except:try:

newname=info.filename.encode('cp437').decode('utf-8');

except:

newname=info.filename

outname=newname.split('/')

l=len(outname)if outname[l-1]!='':#如果是文件if info.flag_bits & 0x01:#如果文件有密码for pwd inpasslist:try:

body=zf.read(info,pwd=pwd.encode())

print("pass:"+pwd)

with open(outPath+'/'+outname[l-1],'wb') asoutfile:

outfile.write(body)

except:

passelse:

with open(outPath+'/'+outname[l-1],'wb') asoutfile:#要把中文的zip解压出中文,就不要用extract了,在新位置创建中文名文件,然后把读取出来的数据写进去就可以。

outfile.write(zf.read(info))else:#如果是文件,直接复制到新位置

shutil.copy(filename,outPath+'\\'+f)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值