zoukankan      html  css  js  c++  java
  • 在windows下解压缩rar文件

    这是一篇比较无聊的博文。只是给博客除草的。

    我从我的移动硬盘里翻出来了一堆电子书,从哪拿到的我忘了,但是都打在rar的压缩包里,这让我查找起来非常不方便。前几天找某本书看,就没有查到,又百度到的下载地址,之后发现躲在这堆rar的某个角落。书很多,rar命名又不规范,查找起来简直头疼。我截取了一些还算是好看一点的,大概是酱婶的:

    所以我决定,把这堆rar全部解压。

    可是,有一万多个rar,我总不能手动挨个点吧!我不要!我可是程序猿!这种事情当然要电脑自己去完成啦!

    于是我开始百度怎么解压缩rar。网上也没有给出很好的解决方案,大致有两种方向:一是用命令,winrar x来解压缩,二是用现成的库,有个叫unrar的。我先试了一下那个unrar的库,不行,出的错跟网上一模一样,而且下载的dll也不能用,那个是32位的,我系统64位不支持。然后我就懒得去找了,乖乖用winrar命令。打开WinRAR软件,在帮助主题里面有命令行的使用方式,我这里用到的是

    winrar x -icbk -y (要解压的文件) (解压到的目标位置)

    其中x表示解压缩,-icbk是后台运行,-y是安静模式,即不询问,一切要询问的地方都选是。至于程序其实就很简单了,遍历一下上面那个目录就好了。

    import os
    import re
    
    fdir = "D:\各种小说"
    ddir = os.path.join(fdir, "books")
    
    if not os.path.isdir(ddir):
        os.makedirs(ddir)
    
    for f in os.listdir(fdir):
        # 只解压rar和zip
        if f.endswith(".rar") or f.endswith(".zip"):
            # part xxx的只解压第一个,重复解压比较浪费时间
            p = re.findall(r".part(d+).rar$", f)
            if p and int(p[0]) != 1:
                continue
            # 命令解压
            os.system("winrar x -ibck -y "%s" "%s"" % (os.path.join(fdir, f), ddir))
            print(f + "  解压成功!")

    有几个细节方面的小问题:

    1. 这个脚本不能双击运行,否则的话,机器上会不停的弹出小窗口再消失,就没法做别的事了。所以我把项目放在pycharm下面跑。
    2. 不能把电子书的目录放在pycharm的项目下,否则打开项目时候就会卡死。
    3. 网上大部分实例都没有加-y参数,对于我这堆电子书来讲就会有问题,一是有重复的书,总要弹出提示框问是否覆盖,加上-y就不询问直接覆盖了;二是有多个part的电子书,有一个part丢失了就会提示无法解压,加上-y后会把前面完整的部分都解压出来,后面的放弃;三是有损坏的rar,加-y就自动忽略了。
    4. 要解压的文件和解压到的目录如果有空格,需要用双引号引起来。目标目录如果不存在的话不会自动创建,所以必须提前建立好。

    大概就是这样。最终的结果不是100%完美的,有些书混在了一起,本来他们在各自的rar中就是混乱的,现在更是混乱到了一起。像是这样:

    当初没有考虑到这个问题,我以为一个rar里面如果有多个文件的话,会装在一个文件夹里的,实际情况是有的装了,有的没装。嘛,就这样吧,我也不是很在意,大不了这些看不懂的都直接删了,想看的时候再百度就是了。

    ******

    最后,我开始转型python3了,减少中文编码的问题。

    最后的最后,如果想看书的话,还请支持正版图书,算是对作者的鼓励了!>w<

  • 相关阅读:
    UVA 11997 K个最小和
    UVALive 3135阿格斯
    UVA 10635 王子和公主
    UVA11991线性查询
    UVA1339仿射和换位密码
    UVA 10382喷水设施
    LA2965字符串合并
    FatMouse's Speed--hdu1160(dp+输出路径)
    Dividing--hdu1059(动态规划)
    Piggy-Bank--hdu1114(完全背包)
  • 原文地址:https://www.cnblogs.com/anpengapple/p/6140213.html
Copyright © 2011-2022 走看看