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中数据解析
May 05 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
django反向解析和正向解析的方式
Jun 05 Python
Python实现处理逆波兰表达式示例
Jul 30 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
Python函数参数类型及排序原理总结
Dec 19 Python
python自动下载图片的方法示例
Mar 25 Python
python mysql中in参数化说明
Jun 05 Python
python中可以声明变量类型吗
Jun 18 Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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小偷的核心程序
2007/04/09 PHP
判断是否为指定长度内字符串的php函数
2010/02/16 PHP
PHP中执行MYSQL事务解决数据写入不完整等情况
2014/01/07 PHP
php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总
2015/04/03 PHP
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
js动态调用css属性的小规律及实例说明
2013/12/28 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
2015/04/17 Javascript
jquery中的工具使用方法$.isFunction, $.isArray(), $.isWindow()
2015/08/09 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
2016/06/02 Javascript
Vue.js每天必学之内部响应式原理探究
2016/09/07 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
ES6中Symbol类型用法实例详解
2017/04/06 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
浅谈vue2 单页面如何设置网页title
2017/11/08 Javascript
如何选择适合你的JavaScript框架
2017/11/20 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
深入理解react 组件类型及使用场景
2019/03/07 Javascript
Vue实现表格批量审核功能实例代码
2019/05/28 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
理解python多线程(python多线程简明教程)
2014/06/09 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
Python爬取qq空间说说的实例代码
2018/08/17 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
python xpath获取页面注释的方法
2019/01/14 Python
python中实现控制小数点位数的方法
2019/01/24 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
阿拉伯时尚购物网站:Nisnass
2021/02/07 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
主管会计岗位责任制
2014/02/10 职场文书
学习与创新自我评价
2015/03/09 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书