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

我从我的移动硬盘里翻出来了一堆电子书,从哪拿到的我忘了,但是都打在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<

在windows下解压缩rar文件的更多相关文章

  1. 在windows下解压缩Linux内核源代码出现重复文件原因

    在windows下解压缩Linux内核源代码出现重复文件原因 2009年06月30日 13:35 来源:ChinaUnix博客 作者:embededgood 编辑:周荣茂     原因一.因为在Lin ...

  2. 如何在linux下解压缩rar格式的文件压缩包

    ##########################################################如何在linux下解压缩rar格式的文件压缩包#date:2014年2月15日22: ...

  3. 如何在linux下解压缩rar和zip格式的文件压缩包

    转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装:  sudo apt-get install  rar  zip rar使用: 将 ...

  4. linux下解压压缩rar文件

    http://download.csdn.net/detail/hnust_xiehonghao/6679893   下载地址 1. 下载软件 以rarlinux-3.8.0 for linux为例, ...

  5. linux 下解压rar文件

    今天遇到要在linux 服务器上解压几个rar 文件的问题,rar似乎是win 专属的压缩格式,所以linux 原生工具链中并没有支持rar 解压的工具.经过一系列搜索确定了一个脚linuxrar 的 ...

  6. Ubuntu下解压rar文件的方法

    原帖地址:http://hi.baidu.com/remoteexp/item/1c32d0ffb92e946c3c148596 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了ra ...

  7. [Linux] Ubuntu下解压rar文件的方法

    一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤就可以迅速搞定. ubuntu 下r ...

  8. ubuntu解压/压缩rar文件

    一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤就可以迅速搞定.ubuntu 下ra ...

  9. centos下解压rar文件,Linux解压tar.gz和tar.bz2的命令

    1.下载:根据主机系统下载合适的版本,当前64为centos系统演示下载: wget http://www.rarlab.com/rar/rarlinux-x64-5.3.0.tar.gz 2.解压安 ...

随机推荐

  1. [转]MONTHS_BETWEEN Function - Oracle to SQL Server Migration

    本文转自:http://www.sqlines.com/oracle-to-sql-server/months_between In Oracle, MONTHS_BETWEEN(date1, dat ...

  2. “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理

    “System.OutOfMemoryException”类型的异常在 mscorlib.dll 中发生,但未在用户代码中进行处理 这个原因肯定不是因为程序内部的逻辑错误,或者别的什么情况. 想想,肯 ...

  3. 仿淘宝头像上传功能(三)——兼容 IE6 浏览器。

    前两篇目录: 仿淘宝头像上传功能(一)——前端篇. 仿淘宝头像上传功能(二)——程序篇. 仿淘宝头像上传功能(三)——兼容 IE6 浏览器 之前的这两篇虽然实现了功能,但不兼容低版本浏览器,而且有些浏 ...

  4. python 3.x 爬虫基础---Requersts,BeautifulSoup4(bs4)

    python 3.x 爬虫基础 python 3.x 爬虫基础---http headers详解 python 3.x 爬虫基础---Urllib详解 python 3.x 爬虫基础---Requer ...

  5. docker部署ELK日志处理

    docker环境下部署的ELK系统,日志处理,保留最近五个小时的日志 dockerlog.sh #!/bin/bash logs=`find /var/lib/docker/containers/ - ...

  6. 十八、fork/join框架

    一.简介 在hadoop的分布式计算框架MapReduce中,会经过两个过程Map过程和reduce过程.Map过程将任务并行计算,reduce汇总并行计算的结果,如图: MapReduce是在分布式 ...

  7. js-js的全局变量和局部变量

    *** 全局变量:在script标签里面定义一个变量,这个变量在页面中js部分都可以使用 - 在方法外部使用,在方法内部使用,在另外一个script标签中使用 *** 局部变量:在方法内部定义一个变量 ...

  8. Nodejs + express + ejs

    特性 <% %> 用于控制流 <%= %> 用于转义的输出 (会对数据字符进行转义) // 数据源 // app.js var tem={ title:"我是中间部分 ...

  9. Raspberry install wine

    sudo apt install wine winecfg出现问题 树莓派3B是卡片电脑,内存为1GB,一般运行Linux.Linux两种主流的内存分配方法2G/2G和3G/1G,树莓派系统后期优化性 ...

  10. OmniGraffle教程(二)

    原文链接:简书网 创建一个树形结构图是任何一个作图软件最常用的功能之一了,而OmniGraffle画树形图的快速方便是其他软件无法比拟的,花1分钟即可学会,受益无穷. 方法一:用Diagram工具快速 ...