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 相关文章推荐
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
Apr 13 Python
Python 错误和异常代码详解
Jan 29 Python
如何用python整理附件
May 13 Python
django允许外部访问的实例讲解
May 14 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
python开发之anaconda以及win7下安装gensim的方法
Jul 05 Python
详解从Django Allauth中进行登录改造小结
Dec 18 Python
Python进阶之迭代器与迭代器切片教程
Jan 29 Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 Python
python中os.remove()用法及注意事项
Jan 31 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 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模板页面中分页代码的解析
2009/02/06 PHP
php中session退出登陆问题
2014/02/27 PHP
用 Composer构建自己的 PHP 框架之基础准备
2014/10/30 PHP
php第一次无法获取cookie问题处理
2014/12/15 PHP
php遍历替换目录下文件指定内容的方法
2016/11/10 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
PHP fclose函数用法总结
2019/02/15 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
JavaScript设计模式之外观模式实例
2014/10/10 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
jQuery中filter()方法用法实例
2015/01/06 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
jQuery和JavaScript节点插入元素的方法对比
2016/11/18 Javascript
浅析javascript中的Event事件
2016/12/09 Javascript
微信小程序 登录的简单实现
2017/04/19 Javascript
详解Node.js中的Async和Await函数
2018/02/22 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
js实现简单商品筛选功能
2021/02/02 Javascript
python学习笔记:字典的使用示例详解
2014/06/13 Python
Python的设计模式编程入门指南
2015/04/02 Python
Linux下为不同版本python安装第三方库
2016/08/31 Python
django框架forms组件用法实例详解
2019/12/10 Python
关于Pytorch MaxUnpool2d中size操作方式
2020/01/03 Python
python super用法及原理详解
2020/01/20 Python
Python异常原理及异常捕捉实现过程解析
2020/03/25 Python
浅谈django channels 路由误导
2020/05/28 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
学前班教师的自我鉴定
2013/12/05 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
2014年祖国生日寄语
2014/09/19 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
python 爬取豆瓣网页的示例
2021/04/13 Python