python利用7z批量解压rar的实现


Posted in Python onAugust 07, 2019

一开始我使用了rarfile这个库,奈何对于含有密码的压缩包支持不好,在linux上不抛出异常;之后有又尝试了unrar。。比rarfile还费劲。。

所以用了调用系统命令的方法,用7z来解压

通过apt可以安装上7z-full和7z的rar插件

有一个地方要注意 -o 和-p与后面的目录、密码之间没有空格!!

同样可以用这个代码暴力破解压缩包密码

# coding:utf-8 

import os

import zipfile

import traceback

import time

import shutil

import sys,getopt

 

succeedpath=""

unsucceedpath=""

psds={"2018","123456"}

 

 

opts,args=getopt.getopt(sys.argv[1:],"p:")

path=args[0]

for psd in args[1:]:

  psds.add(psd)

#for op,value in opts:

#  if op in ("-p","--password"):

#    psds.add(value)

 

 

def mkdirs(dirpath):

  global succeedpath,unsucceedpath

  succeedpath=os.path.join(dirpath,"0.succeed")

  unsucceedpath=os.path.join(dirpath,"0.unsucceed")

  if(not os.path.exists(succeedpath)):

    os.makedirs(succeedpath)

  if(not os.path.exists(unsucceedpath)):

    os.makedirs(unsucceedpath)

 

def extractdir(path):

  for filename in os.listdir(path):

    filepath=os.path.join(path,filename)

    if(os.path.isfile(filepath)):

      extractfile(filepath)

 

 

def extractfile(path):

  (dirpath,filen)=os.path.split(path)

  print("解压"+filen+"   ing...")

  try:

    if(filen.endswith(".rar") or filen.endswith(".zip")):

      path=os.path.abspath(path)

      dirpath=os.path.abspath(dirpath)

      cmd="7z x "+path+" -o"+dirpath+" -y "+" -p"

      state=False

      if(os.system(cmd)==0):

        state=True

      else:

        for psd in psds:

          cmdp="7z x "+path+" -p"+psd+" -y "+" -o"+dirpath

          if(os.system(cmdp)==0):

            state=True

            break

    else:

      return

    if (state):

      shutil.move(path,succeedpath)

    else:

      shutil.move(path,unsucceedpath)

      with open(os.path.join(dirpath,"errorinfo.txt"),"a+") as errorinfo:

        errorinfo.write("time:"+str(time.time())+"\n")

        errorinfo.write("解压出错!\n可能是密码错误!\n")

  except :

    with open(os.path.join(dirpath,"errorinfo.txt"),"a+") as errorinfo:

      errorinfo.write("time:"+str(time.time())+"\n")

      errorinfo.write("解压出错!\n")

      traceback.print_exc(file=errorinfo)

    shutil.move(path,unsucceedpath)

 
if(os.path.isdir(path)):

  dirpath=path

  mkdirs(dirpath)

  extractdir(dirpath)

elif(os.path.isfile(path)):

  filepath=path

  (dirpath,filename)=os.path.split(path)

  mkdirs(dirpath)

  extractfile(path)

else:

  print("输入错误!请重新输入!")

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python赋值语句后逗号的作用分析
Jun 08 Python
详解supervisor使用教程
Nov 21 Python
详解程序意外中断自动重启shell脚本(以Python为例)
Jul 26 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
Python 线程池用法简单示例
Oct 02 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
判断Threading.start新线程是否执行完毕的实例
May 02 Python
Python日志处理模块logging用法解析
May 19 Python
Python用类实现扑克牌发牌的示例代码
Jun 01 Python
pycharm 关掉syntax检查操作
Jun 09 Python
Python下载的11种姿势(小结)
Nov 18 Python
PYTHON使用Matplotlib去实现各种条形图的绘制
Mar 22 Python
django基础学习之send_mail功能
Aug 07 #Python
python实现本地批量ping多个IP的方法示例
Aug 07 #Python
Django model 中设置联合约束和联合索引的方法
Aug 06 #Python
对django 模型 unique together的示例讲解
Aug 06 #Python
python django model联合主键的例子
Aug 06 #Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 #Python
详解python中的index函数用法
Aug 06 #Python
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
php面向对象全攻略 (一) 面向对象基础知识
2009/09/30 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
php将字符串转换成16进制的方法
2015/03/17 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
PDO::getAvailableDrivers讲解
2019/01/28 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
2018/08/28 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
layui使用form表单实现post请求页面跳转的方法
2019/09/14 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
python每隔N秒运行指定函数的方法
2015/03/16 Python
Python实现读取Properties配置文件的方法
2018/03/29 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
tensorflow模型继续训练 fineturn实例
2020/01/21 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
欢送退休感言
2014/02/08 职场文书
党组织公开承诺书
2014/03/29 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
2015年小学生新年寄语
2014/12/08 职场文书
2015廉洁自律个人总结
2015/02/14 职场文书
检讨书怎么写
2015/05/07 职场文书
为什么中国式养孩子很累?
2019/08/07 职场文书
幽默口才训练经典句子(48句)
2019/08/19 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技