python利用7z批量解压rar

一开始我使用了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("输入错误!请重新输入!")

  

原文地址:https://www.cnblogs.com/maxzheng/p/10498479.html

时间: 2024-10-03 10:22:58

python利用7z批量解压rar的相关文章

shell批量解压方法

第一: for tar in *.tar.gz;  do tar xvf $tar; done for tar in *.tar.bz2; do tar xvf $tar; done 第二:用tar命令批量解压某个文件夹下所有的tar.gz文件 ls *.tar.gz | xargs -n1 tar xzvf 第三:find -maxdepth 1 -name "*.gz"|xargs -i tar xvzf {} 这条命令可解压当前目录下的所有gz文件 批量解压是比较郁闷的事,以前尝

ubuntu解压rar

一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简 单的,只需要两个步骤就可以迅速搞定. ubuntu 下rar解压工具安装方法: 压缩功能 安装 sudo apt-get install rar 卸载 sudo apt-get remove rar 解压功能 安装 sudo apt-get install unrar 卸载 sudo apt-get remove unrar .rar 解压:rar x

Ubuntu 16.04 - 64bit 解压 rar 报错 Parsing Filters not supported

Ubuntu 16.04 - 64bit  解压rar 文件报错: 错误如下图: 原因: 未安装解压命令 unrar 参考博客: Error - "Parsing Filters not supported" 解决方法: 终端输入: sudo apt-get install unrar 这样就能解压rar文件了

C#压缩或解压(rar和zip文件)

/// <summary> /// 解压RAR和ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe)) /// </summary> /// <param name="UnPath">解压后文件保存目录</param> /// <param name="rarPathName">待解压文件存放绝对路径(包括文件名称)</param> /// <

使用tar命令批量解压*.tar.gz文件

如何将/usr/local/src 下的所有*.tar.gz 文件批量解压到/usr/local/soft目录下 首先进入到/usr/local/soft ...#cd /usr/local/soft ...#ls /usr/local/usr/*.tar.gz | xargs -n1 tar xzvf

linux解压rar压缩文件

服务器是阿里云的 centos 默认linux是没有安装解压rar,zip的软件的.而网上找到的yum install命令也没有用.而且这个rar并不是免费的,只有40天的试用期...真是坑啊 由于用的centos是64位的,所以要下载64位的 rar linux .因为32位的在执行时会出现 /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 的报错,而按网上说的使用yum install glibc.i686命

linux解压rar文件

借助rarlinux来解压rar格式文件. 下载地址:http://www.rarlab.com/download.htm 打不开或者网速不好的可以到可以我的资源中的下载,免费: http://download.csdn.net/detail/alex_my/6731197 // 1 解压 tar -zxvf rarlinux-3.6.0.tar.gz // 2 解压出一个rar文件夹,进入, 需要root权限 cd rar make make install // 使用方法 =========

Linux脚本批量tar打包多个文件,批量解压多个文件

打包, 将要打包的文件列表放入c_list.txt里,如果是数据库的文件,可以用show tables;命令列出表名. #!/bin/bash #批量打包 for i in `cat c_list.txt`   do      tar -jcvf $i.tar.bz2 $i.frm $i.MYD $i.MYI   done 批量解压: #!/bin/bash   for i in `ls ./*.tar.gz`       do          tar -zxvf $i >/dev/null 

ubuntu解压rar文件

一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简 单的,只需要两个步骤就可以迅速搞定. ubuntu 下rar解压工具安装方法: 压缩功能 安装 sudo apt-get install rar卸载 sudo apt-get remove rar 解压功能 安装 sudo apt-get install unrar卸载 sudo apt-get remove unrar .zip 解压:unzip F