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写入CSV文件的方法
Jul 08 Python
python 实现自动远程登陆scp文件实例代码
Mar 13 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python基于分水岭算法解决走迷宫游戏示例
Sep 26 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
Oct 01 Python
Python爬取十篇新闻统计TF-IDF
Jan 03 Python
在numpy矩阵中令小于0的元素改为0的实例
Jan 26 Python
python的常见矩阵运算(小结)
Aug 07 Python
Django模板标签中url使用详解(url跳转到指定页面)
Mar 19 Python
Python多线程正确用法实例解析
May 30 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
python七种方法判断字符串是否包含子串
Aug 18 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
PHP输入流php://input介绍
2012/09/18 PHP
编写安全 PHP应用程序的七个习惯深入分析
2013/06/08 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
Node.js+Express配置入门教程
2016/05/19 Javascript
有关JavaScript中call()和apply() 的一些理解
2016/05/20 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
基于React实现表单数据的添加和删除详解
2017/03/14 Javascript
jQuery实现frame之间互通的方法
2017/06/26 jQuery
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
vue axios 简单封装以及思考
2018/10/09 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python读取stdin方法实例
2019/05/24 Python
基于Pytorch SSD模型分析
2020/02/18 Python
python继承threading.Thread实现有返回值的子类实例
2020/05/02 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
HTML5事件方法全部汇总
2016/05/12 HTML / CSS
俄罗斯儿童和青少年服装、鞋子及配件的在线商店:Orby
2020/02/20 全球购物
试用期转正鉴定评语
2014/01/27 职场文书
董事长助理工作职责范本
2014/07/01 职场文书
九一八事变演讲稿
2014/09/05 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2015年监理工作总结范文
2015/04/07 职场文书