精华内容
下载资源
问答
  • 有bug,因为测试用的小文件--没啥问题,但实际是要解压一些学习资料(比较大,出错可能也看不出来),后来就发现可能有问题了。自己平时又不用--不改了,所以代码...之后我用到的是解压zip文件的扩展包zipfile,可以直...

    有bug,因为测试用的小文件--没啥问题,但实际是要解压一些学习资料(比较大,出错可能也看不出来),后来就发现可能有问题了。

    自己平时又不用--不改了,所以代码仅供参考

    这是一个用python写解压大量zip脚本的说明,本人新手一个,希望能对各位有所启发。

    首先要注意的,在运行自己的脚本之前一定先备份或者复制出一些样本进行测试,不然出错会很麻烦;

    之后我用到的是解压zip文件的扩展包zipfile,可以直接pip安装或者在IDE里安装,需要特别注意的是这个包的文件名解码方式需要我们去修改,先去查看源文件,直接搜索“cp437”(一个编码方式),找到后全部替换为“gbk”,即可解决中文显示问题。

    代码:

    import os

    import shutil

    import zipfile

    import rarfile

    # 首先引入需要的工具包

    # shutil为后期移动文件所需

    # 路径改这里!

    parent_path = input('请输入要解压的文件路径:')

    # 文件类型选择

    file_flag = '.' + input('请输入一种需要的压缩类型(例:zip):')

    # 删除已解压过的文件

    # 一定要先测试,不然很麻烦

    def del_old_zip(file_path):

    os.remove(file_path)

    # 解压

    def zip_decompress(file_path, root):

    # 开始

    # zipfile打开zip文件

    z = zipfile.ZipFile(f'{file_path}', 'r')

    # 解压

    z.extractall(path=f"{root}") # path为解压路径,解包后位于该路径下

    # 判断是否需要重复解包

    for names in z.namelist():

    if names.endswith(file_flag):

    z.close()

    return 1

    # 结束

    z.close()

    return 0

    def rar_decompress(file_path, root):

    # 开始

    # rarfile打开rar文件

    z = rarfile.RarFile(f'{file_path}', 'r')

    # 解压

    z.extractall(path=f"{root}") # path为解压路径,解包后位于该路径下

    # 判断是否需要重复解包

    for names in z.namelist():

    if names.endswith(file_flag):

    z.close()

    return 1

    # 结束

    z.close()

    return 0

    decompress = None

    if file_flag == '.zip':

    decompress = zip_decompress

    elif file_flag == '.rar':

    decompress = rar_decompress

    else:

    print('格式输入错误或不支持当前格式')

    os.system('pause')

    exit(0)

    # 因为我在使用过程中发现有些文件解包后会混在一起

    # 在平时大家手动解压时可能也会遇到提示是否覆盖的问题

    # 下面的两个函数解决这一问题

    # 开始要先创建一个大文件夹 与压缩包名字相同

    # 避免后期混乱和麻烦

    def start_dir_make(root, dirname):

    os.chdir(root)

    os.mkdir(dirname)

    return os.path.join(root, dirname)

    # 去除多余文件夹

    def rem_dir_extra(root, father_dir_name):

    # 递归要注意信息的正常处理 搞不好上一个调用已经改变了东西 而下面的调用还是使用之前的数据

    try:

    # 判断文件夹重名 开始

    for item in os.listdir(os.path.join(root, father_dir_name)):

    # 第一步判断是不是一个文件夹,如果不是则跳过本次循环

    if not os.path.isdir(os.path.join(root, father_dir_name, item)):

    continue

    # 判断是否要脱掉一层目录结构

    # 文件夹名字要相同,且子目录中只有单独的一个文件夹

    if item == father_dir_name and len(

    os.listdir(os.path.join(root, father_dir_name))) == 1:

    # 改变工作目录

    os.chdir(root)

    # 将无用文件夹重命名,因为直接移动会有重名错误

    os.rename(father_dir_name, father_dir_name + '-old')

    # 移动文件后删除空文件夹

    shutil.move(os.path.join(root, father_dir_name + '-old', item), os.path.join(root))

    os.rmdir(os.path.join(root, father_dir_name + '-old'))

    # 将去掉一层目录结构后的文件夹继续作为父本递归处理下去

    # 这里要注意,上面已经发生过数据的改动,所以下面递归传参一定要正确!

    rem_dir_extra(root, item)

    else:

    # 处理那些不满足上面条件的文件夹

    rem_dir_extra(os.path.join(root, father_dir_name), item)

    except Exception as e:

    # 打印错误信息

    print("清除文件夹出错" + str(e))

    # 入口

    if __name__ == '__main__':

    flag = 1

    while flag:

    # 循环遍历文件夹

    for root, dirs, files in os.walk(parent_path):

    # 读取文件名

    for name in files:

    if name.endswith(file_flag):

    # 创建文件夹

    new_ws = start_dir_make(root, name.replace(file_flag, ''))

    # zip文件地址

    zip_path = os.path.join(root, name)

    # 解压

    flag = decompress(zip_path, new_ws)

    # 一定要备份或先测试,不然可能会凉,自己选择修改

    del_old_zip(zip_path)

    # 去掉多余的文件结构

    rem_dir_extra(root, name.replace(file_flag, ''))

    print(f'{root}\\{name}'.join(['文件:', '\n解压完成\n']))

    # 由于解压可能解了好几次 所以可能会有已经解压好的父级目录重名无法处理 这里要再处理一次

    rem_dir_extra(os.path.split(parent_path)[0], os.path.split(parent_path)[1])

    print("解压完成啦,记得检查有没有{}格式之外的呀!\n\n其他格式需要自己改一下了".format(file_flag))

    os.system('pause')

    好了,以上仅是个人所遇到的问题的解决方案,希望能对各位有所帮助,如果解决不了问题还请耐心查阅其他资料,将过程理顺之后再去实践,一定程度可以让自己保持清醒,提高效率。

    展开全文
  • 对于电脑上经常需要解压及压缩的用户来说,拥有它真是太方便了,无需要安装,解压即可使用,不占用内存,非常方便
  • 最近解压VS2017(离线安装),用的就WinRAR分卷压缩。吾用7zip解压,安装时总是提示要联网。能联网吾还用什么离线包? 今天又折腾回来了,用7zip解压后,一看目录不到2G。不对啊,压缩包本身就16G,怎么才2G?难道...

    最近解压VS2017(离线安装),用的就WinRAR分卷压缩。吾用7zip解压,安装时总是提示要联网。能联网吾还用什么离线包?

    今天又折腾回来了,用7zip解压后,一看目录不到2G。不对啊,压缩包本身就16G,怎么才2G?难道别的包没有同时解压?用7zip挨个解压,这耗时多不说,就卡在哪里。

    于是就安装了一个WinRAR,解压速度快了,目录30多G。这才正常。

     

    看来凡事不能迷信啊。吾就迷信7ZIP……

    展开全文
  • WinRAR.zip

    2019-09-03 17:13:57
    方便,找了一堆WinRar,现在很多都要用rar压缩了,360压缩不能压缩成rar包。本人自己在用这个,这是自己买的这个绿色无广告的。解压后打开应用程序(.exe)就可以用了
  • 7zip解压.gz文件,WinRAR解压.zip。以及解包.dat文件。
    接到个需求,要把一个.gz文件解压出来,得到.dat文件。这个dat文件是按照一定的格式组成的包,需要将他按照文件结构再次解压一遍,得到真正想要的文件。以前做过使用WinRAR解压zip文件的需求,在此将两个记录一下,以便日后查阅。
    

    一、解压.gz文件

    1.下载7-zip,安装,获得其7z.exe以及7z.dll
    2.使用cmd命令行,解压文件,命令:7z.exe e "E:/abc.gz" -y -aos -o"E:/abc"
    3.命令解释:e(解压),"E:/abc.gz"(文件绝对路径) -y(使用默认选项) -aos(跳过一寸在文件) -o"E:/abc"(指定生成的目录,会自动创建不存在的目录)
    4.使用ShellExecute(NULL,"open","*//7z.exe",sParam,NULL,SW_SHOW)执行命令,其中sParam为第2点命令中除去7z.exe的其他内容
    

    二、解压.zip文件

    上面的7zip随程序打包使用,但是WinRAR一般在windows下都会安装。因此可以从注册表获取WinRAR的安装路径,然后使用ShellExecute来执行相关内容。
    1.获取WinRAR安装路径
    
    bool fnGetWinRarPath(CString &csPath)
    {
        csPath.Empty();
        HKEY hKey;
        LPCTSTR Rgspath = _T("Software\\Classes\\WinRAR\\Shell\\open\\command");
        long ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Rgspath, 0, KEY_READ, &hKey);
        if (ERROR_SUCCESS != ret)
        {
            RegCloseKey(hKey);
            return false;
        }
    
        DWORD type = REG_SZ;
        BYTE byPathInfo[MAX_PATH];
        DWORD dwInfoSize = 0;
        ret = RegQueryValueEx(hKey, _T(""), NULL, &type, byPathInfo, &dwInfoSize);
        if (ERROR_SUCCESS != ret)
        {
            RegCloseKey(hKey);
            return false;
        }
    
        csPath.Format("%s", byPathInfo);
        return true;
    }
    2.cmd执行的命令,同7zip
    3.一个网上找的cmd命令示例:C:\Program Files\WinRAR\WinRAR.exe x -iext -ow -ver -- "d:\png.rar" d:\png\(将d:\png.rar解压到d:\png\目录下)
    

    三、解包.dat文件

    文件格式待整理。
    
    展开全文
  • 用法: rar - - a 添加文件到压缩文件c 添加压缩文件注释cf 添加文件注释ch 改变压缩文件参数cw 写入压缩文件注释到文件d 删除压缩文件中的文件e 解压压缩文件到当前目录f 刷新压缩文件中...

    用法:     rar - -

    a             添加文件到压缩文件

    c             添加压缩文件注释

    cf            添加文件注释

    ch            改变压缩文件参数

    cw            写入压缩文件注释到文件

    d             删除压缩文件中的文件

    e             解压压缩文件到当前目录

    f             刷新压缩文件中的文件

    i[参数]=  在压缩文件中查找字符串

    k             锁定压缩文件

    l[t,b]        列出压缩文件[技术信息,简洁]

    m[f]          移动到压缩文件[仅对文件]

    p             打印文件到标准输出设备

    r             修复压缩文件

    rc            重建丢失的卷

    rn            重命名压缩文件

    rr[N]         添加数据恢复记录

    rv[N]         创建恢复卷

    s[名字|-]     转换压缩文件为自解压格式或转换回压缩文件

    t             测试压缩文件

    u             更新压缩文件中的文件

    v[t,b]        详细列出压缩文件[技术信息,简洁]

    x             用绝对路径解压文件

    -             停止扫描

    ac            压缩或解压后清除存档属性

    ad            添加压缩文件名到目标路径

    ag[格式]      使用当前日期生成压缩文件名

    ao            添加具有压缩属性的文件

    ap      添加路径到压缩文件中

    as            同步压缩文件内容

    av            添加用户身份校验(仅注册版本可用)

    av-           禁用用户身份校验

    c-            禁用注释显示

    cfg-          禁用读取配置

    cl            名称转换为小写

    cu            名称转换为大写

    df            压缩后删除文件

    dh            打开共享文件

    dr            删除文件到回收站

    ds            对固实压缩文件禁用名称排序

    dw            压缩后清除文件

    e[+]    设置文件排除和包括属性

    ed            不添加空目录

    en            不添加"压缩文件结束"标志

    ep            从名称中排除路径

    ep1           从名称中排除基本目录

    ep2           展开为完整路径

    ep3           扩展路径为包含盘符的完全路径

    f             刷新文件

    hp[密码]      同时加密文件数据和文件头

    id[c,d,p,q]   禁用消息

    ieml[属性]    用 E-mail 发送压缩文件

    ierr          发送所有消息到标准错误设备

    ilog[名称]    把错误写到日志文件(只有注册版本可用)

    inul          禁用所有消息

    ioff          完成一个操作后关闭 PC 电源

    isnd          启用声音

    k             锁定压缩文件

    kb            保留损坏的已解压文件

    m<0..5>       设置压缩级别(0-存储...3-默认...5-最大)

    mc      设置高级压缩参数

    md      以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)

    ms[ext;ext]   指定存储的文件类型

    mt      设置线程数

    n       仅包含指定的文件

    n@            从标准输入设备读取文件名到包括

    n@      在指定的文件列表包括文件

    o[+|-]        设置覆盖模式

    oc            设置 NTFS 压缩属性

    or            自动重命名文件

    os            保存 NTFS 流

    ow            保存或恢复文件所有者和组

    p[密码]       设置密码

    p-            不询问密码

    r             递归子目录

    r0            仅递归通配符名称的子目录

    ri

    [:]   设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间

    rr[N]         添加数据恢复记录

    rv[N]         创建恢复卷

    s[,v[-],e] 创建固实压缩文件

    s-            禁用固实压缩文件

    sc[obj]  指定字符集

    sfx[名称]     创建自解压压缩文件

    st[名称]      从标准输入设备读取数据(stdin)

    sl      处理小于指定大小的文件

    sm      处理超过指定大小的文件

    t             压缩后测试文件

    ta      添加日期 后修改的文件,日期格式 YYYYMMDDHHMMSS

    tb      添加日期 前修改的文件,日期格式 YYYYMMDDHHMMSS

    tk            保留原始压缩文件时间

    tl            设置压缩文件时间为最新文件时间

    tn      添加 以后的文件

    to      添加 以前的文件

    ts[N]  保存或恢复文件时间(修改,创建,访问)

    u             更新文件

    v             自动检测创建卷的大小或者列出所有的卷

    v[k,b]  创建卷大小=*1000 [*1024, *1]

    vd            创建容量前清除磁盘内容

    ver[n]        文件版本控制

    vn            使用旧风格的卷命名方案

    vp            每卷之前暂停

    w       指定工作目录

    x       排除指定的文件

    x@            从标准输入设备读取要排除的文件名

    x@      排除指定列表文件中的文件

    y             假设对全部询问都回答是

    z[文件]       从文件读取压缩文件注释

    展开全文
  • 如何在java中解压zip和rar文件为了方便广大的程序员朋友,下面讲一讲如何在java中实现对zip和rar文件的解压,一起和小编来看看吧!一、解压rar文件。由于WinRAR 是共享软件,并不是开源的,所以解压rar文件的前提是...
  • 写在开头从 WinZip 到 WinRAR,再从 WinRAR 到 7-Zip,我们总是寻求一个在价格和功能上找到一个均衡点来满足我们对压缩文件这一日常需求,在这 BandiZip 即将开始收费之际,我们似乎又要回到当年从 WinRAR 逃离到 7-...
  • java解压ZIP 解决中文乱码 (GBK和UTF-8)工具使用 : zip4jGitHub : zip4j版本 : 2.2.8Maven :net.lingala.zip4jzip4j2.2.8ZIP解压现状ZIP格式在不同平台上使用不同软件压缩,大致结果为两类:1. Windows下使用WinRAR...
  • 再手动解压文件中,发现有些文件解压...WinRAR.exe 解压zip文件到指定目录下 命令如下(将android-ndk-r13b-windows-x86_64.zip 文件解压到 C:\Users\sdd\AppData\Local\Android\Sdk\ndk-bundlet文件目录下): “C:\P
  • 使用UnRAR.exe解压zip文件不...使用WinRAR.exe 可成功解压zip文件 命令如下(将ccss.zip文件解压到 D:\bbb\test文件目录下): “C:\Program Files (x86)\WinRAR\WinRAR.exe” x D:\aaa\data\ccss.zip D:\bbb\test ...
  • /// 解压RAR和ZIP文件(需存在Winrar.exe(只要自己电脑上可以解压或压缩文件就存在Winrar.exe)) /// </summary> /// <param name="UnPath">解压后文件保存目录</param> /// <...
  • winrarzip和rar区别

    千次阅读 2011-12-29 16:35:54
    区别一、zip的安装比较大,并仅仅有英文版+汉化包 rar有官方的简体中文版,并且安装很小,不足一兆 区别二、winrar的压缩率较高,而zip的压缩率更低 ...rar不仅有自己的格式,还可以压缩成zip格式并解压zip
  • winrar 解压文件夹中(c:\zhang)所有的zip到一个新的文件夹中(c:\new)。 然后for出(c:\new)中的所有exe。
  • C++解压zip压缩文件

    千次阅读 2018-10-29 18:38:23
    最近做项目需要用到网络下载压缩文件并解压至指定文件夹,本意是使用zlib库,但是花费许久时间仍没有编译通过官网的文件,于是放弃,转而寻求其他方法,在之前的博客中有说道用system调用shell命令的方式使用winrar解压,...
  • JAVA利用cmd命令行调用WINRAR解压及压缩     前言 对于zip文件,java有自带类库java.util.zip;可是要想解压rar文件只能靠第三方类库,我试过两个:com.github.junrar和de.innosystec.unrar,前者解压时可能会...
  • 展开全部对于zip文件,java有自带类库java.util.zip;可是要想解62616964757a686964616fe59b9ee7ad9431333365656635压rar文件只能靠第三方类库,我试过两个:...利用cmd命令调用winRAR进行解压,无疑方...
  • Linux unzip --解压zip文件

    千次阅读 2016-04-08 11:13:22
    用途说明 zip文件是一种常用的压缩文件格式,WinZip、WinRar等压缩软件都支持zip文件格式,就连java的jar包也是...本文的主题是讲一下使用unzip命令来解压zip格式的压缩文件。当我们需要把Windows上的很多文件(比如一
  • 项目使用当中遇到的吭1:rar格式压缩包仅支持WINRAR5以下的,如果是WINRAR5+ 那么FileHeaders获取的size就为0;2:因为用的是springboot所以本地文件夹获取不到路径,因为最终要打成jar包运行在服务器的(获取项目...
  • java压缩和解压ZIP和RAR文件该文章主要内容1.引入依赖2. 支持解压缩ZIP和winrar 5版本以上的RAR代码3. 解压缩方式说明3.1 ZIP可以使用 apache ant 实现文件压缩/解压缩3.2 winrar 5以下使用java-unrar解压缩,winrar...
  • java调用winrar解压文件[rar.bz2.zip.....]

    千次阅读 2012-02-03 14:23:41
    String cmd2 = "C:\\Program Files\\WinRAR\\winrar.exe x -r -o+ -ibck -y " + oldFile + " *.* " + tmp; Runtime rt = Runtime.getRuntime(); Process pre = rt.exec(cmd2); if (0 != pre....
  • Java解压zip及rar

    2019-06-28 14:52:00
    1:rar格式压缩包仅支持WINRAR5以下的,如果是WINRAR5+ 那么FileHeaders获取的size就为0; 2:因为用的是springboot所以本地文件夹获取不到路径,因为最终要打成jar包运行在服务器的(获取项目路径本地是可以的,...
  • C#解压zip和rar文件

    2017-03-01 18:01:56
    常用的压缩格式rar、zip和7z1在C#.NET中压缩解压rar文件rar格式是有专利文件的商业压缩格式,不开源,对解码算法公开,但压缩算法私有,需付费,如需在商业软件中使用rar格式进行解压缩,需为rar付费,rar在国内很...
  • I can also see in Notepad++ that the ZipArchive zip is different from the WinRAR zip, and the file size is different. I can successfully call winrar as a system command in ...
  • 在日常中经常会使用到像WinRAR或WinZIP这样的压缩文件,通过这些软件可以把一个很大的文件进行压缩以方便传输。 在JAVA中,为了减少传输时的数据量也提供了专门的压缩流,可以将文件或文件夹压缩成 ZIP、JAR、...
  • Java解压zip和rar文件

    千次阅读 2010-03-31 10:41:00
    本文主要讲一讲如何在java中实现对zip和rar文件的解压。 一、解压rar文件。 由于WinRAR 是共享软件,并不是开源的,所以解压rar文件的前提是系统已经安装了winrar,比如本人的安装路径是: C://Program Files//...
  • 场景winrar压缩的zip解压后乱码分析编码不一致,winrar默认采用本地编码 (国内一般都是gbk)进行压缩 ,而golang字符串编码是utf-8解决//zip文件解压 func Unzip(zipFile string, destDir string) error { ...
  • 写了一个工具类用于解压ZIP和RAR文件,其中解压RAR文件是调WinRAR.exe程序,解决高版本RAR文件,也可以解压其它文件,所需资源我会放入评论下方。 package cn.com.chx.util; import java.io.File; import java.io....
  • WinRAR.5.9.1.zip

    2021-02-17 11:43:33
    ZIP压缩文件里有两个文件,rarreg.key只是注册文件(SGCC,50000用户),解压后双击WinRAR_v5.9.1_64.exe安装就行。 另外,右键菜单最好设置一下,只留“解压文件”和“添加到压缩文件”等两三个就行。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 700
精华内容 280
关键字:

winrar解压zip