-
2021-06-21 11:34:48
前言
.rar 和 .zip 是两种常见的压缩文件格式,.rar 压缩率比zip高,但速度慢,随机访问的速度慢。.zip 可以通过第三方库 zipfile 来进行压缩和解压;.rar 可以通过第三方库 unrar 中的 rarfile 来进行解压(参考),但是笔者目前没有找到可以方便地将批量文件/文件夹压缩成 .rar 格式的工具。
直到看到博文 Python实现加密压缩成RAR或ZIP文件 中提供的思路:直接用 Python 调用 Windows 系统下的 CMD 命令进行压缩。
CMD命令参数
调用压缩成 .rar 的 CMD 命令为:
C:/"Program Files"/WinRAR/WinRAR.exe a D:/test/data.rar D:/test/data.txt
C:/"Program Files"/WinRAR/WinRAR.exe a D:/test/folder.rar D:/test/folder
命令参数解释:
- 第一个参数为 WinRAR 软件的安装路径,(需要在电脑上安装 WinRAR)
- 第二个参数a表示添加压缩,
- 第三个参数为压缩文件的输出路径及其压缩的文件名,
- 第四个参数为待压缩的文件路径,如果是单个文件需要具体到文件名,如果是文件夹下所有文件,只需到当前文件夹路径。
—— NOTE:如果任意一个路径名中含有空格,一定要用引号引起来,否则会报错!!为了保险起见,建议第一、三和四个参数统统通用引号引起来:
"C:/Program Files/WinRAR/WinRAR.exe" a "D:/test/data.rar" "D:/test/data.txt"
"C:/Program Files/WinRAR/WinRAR.exe" a "D:/test/folder.rar" "D:/test/folder"
—— NOTE:如果需要压缩成 .zip 格式,只需要修改输出文件的后缀名即可。
待压缩文件路径的级别
第四个参数——待压缩的文件路径从哪一级目录开始,压缩包就从哪一级目录开始。
举个例子,现在我的
D:\
中存在一个文件夹test
,目录结构如下:D:\ |_test\ |_data.txt |_folder\ |_data1.txt |_data2.txt |_subfolder\ |_data3.txt |_data4.txt
情形1:输入完整的路径
当我想压缩文件夹
folder\
时,执行命令:"C:/Program Files/WinRAR/WinRAR.exe" a "D:/test/folder.rar" "D:/test/folder"
生成的
folder.rar
目录结构如下:folder.rar\ |_test\ |_folder\ |_data1.txt |_data2.txt |_subfolder\ |_data3.txt |_data4.txt
我们实际想压缩的是文件夹
folder
,压缩的结果是从系统盘D:\
下的test\
开始(不过test\
下的其它文件不会被压缩进去,如上面的data.txt
)。同理,当我只想压缩
subfolder\
时,若执行如下命令:"C:/Program Files/WinRAR/WinRAR.exe" a "D:/test/folder/subfolder.rar" "D:/test/folder/subfolder"
生成的
subfolder.rar
目录结构如下:subfolder.rar\ |_test\ |_folder\ |_subfolder\ |_data3.txt |_data4.txt
情形2:只输入需要压缩的文件/文件夹名
如果不想要多余的上级目录,可以将CMD命令行的当前工作路径切换到该文件/文件夹所在的目录。
示例如下,当我想压缩文件夹
folder\
时,执行命令:cd "D:/test/" "C:/Program Files/WinRAR/WinRAR.exe" a "folder.rar" "folder"
生成的
folder.rar
目录结构如下:folder.rar\ |_folder\ |_data1.txt |_data2.txt |_subfolder\ |_data3.txt |_data4.txt
同理,当我只想压缩
subfolder\
时,若执行如下命令:cd "D:/test/folder/" "C:/Program Files/WinRAR/WinRAR.exe" a "subfolder.rar" "subfolder"
生成的
subfolder.rar
目录结构如下:subfolder.rar\ |_subfolder\ |_data3.txt |_data4.txt
Python 调用CMD命令
弄清楚 CMD 命令后,例用 Python 进行实现就很容易了,实现方式为:
os.system
。具体实现代码如下:
import os def compress(input_file, output_file, root_path, rar_path='C:/"Program Files"/WinRAR/WinRAR.exe'): """ 调用CMD命令压缩文件/文件夹 Parameters ---------- input_file : 需要压缩的文件/文件夹名。从哪一级目录开始,就会从哪一级开始压缩; output_file : 压缩文件的输出路径及其压缩的文件名; 可以是.rar, .zip; root_path: input_file 所在目录; rar_path : WinRAR软件的安装路径, The default is 'C:/"Program Files"/WinRAR/WinRAR.exe'. NOTE: 路径和文件名中带空格的时候一定要多加一重引号!! """ cmd_command = r'%s a %s %s' % (rar_path, output_file, input_file) os.chdir(root_path) # 切换工作目录 os.system(cmd_command) if os.system(cmd_command)==0: print('Successful backup to', output_file) else: print('Backup FAILED', input_file)
Python实现自动批量压缩
现在我的需求是:在 root_path 目录下有大量的文件/文件夹,需要逐个对其进行压缩成 .rar 格式。
实现如下:
root_path = "D:/test/folder/" lists = os.listdir(root_path) for fp in lists: input_file = '"' + fp + '"' #待压缩的文件路径及文件,多加一重引号 output_file = '"' + fp + '.rar"' #压缩文件的输出路径及文件名,多加一重引号 compress(input_file, output_file, root_path)
大功告成!
参考阅读
- Python实现加密压缩成RAR或ZIP文件 (好文,非常感谢)
- python文件rar, zip,tar, gz压缩,解压缩文件 (参考使用其中的
make_targz()
方法时出现问题)
更多相关内容 -
java代码实现单个或多个文件压缩成rar包
2018-07-26 21:40:44java代码实现单个或多个文件压缩成rar包,本地要安装winRar插件。 -
asp.net调用RAR实现文件压缩与解压缩图文代码
2017-06-09 16:27:02如果服务器上安装了RAR程序,那么asp.net可以调用RAR实现文件压缩与解压缩。 不过要注意的是,由于Web程序不能直接调用客户端的程序(除非用ActiveX,ActiveX几乎被废弃),所以如果要想实现让用户把本地文件用网页... -
在Mac中将文件压缩为.rar格式的最有效方法
2019-05-27 16:47:27BetterZip中包含unrar功能,允许我们打开和提取rar格式压缩文件。如果要创建和保存RAR存档,我们可以从其网站下载并安装rar命令行工具,或者我们也可以告诉BetterZip已安装它的位置。需要注意的是:BetterZip并没有...BetterZip中包含unrar功能,允许我们打开和提取rar格式压缩文件。如果要创建和保存RAR存档,我们可以从其网站下载并安装rar命令行工具,或者我们也可以告诉BetterZip已安装它的位置。需要注意的是:BetterZip并没有包括RAR许可证,必须单独购买。
具体如何操作,请参考一下教程:1、运行Mac解压缩工具BetterZip,依次点击【BetterZip】>【首选项】>【程序助手】,可以点击【下载并安装Rar】,或者去rar网站上进行下载安装包;
2、下载完成后,右击选择【服务】>【使用BetterZip解压】;
3、解压完成之后,将其放置到合适的位置,然后在【程序助手】中点击【查看】,找到rar,选择并点击【使用RAR】;
4、成功添加“Rar程序的路径”之后,我们退出BetterZip,然后使用BetterZip压缩文件,在压缩格式中,我们就可以选择RAR格式了。
只需要以上四步,我们就可以在Mac中将文件压缩成为.rar格式了。安装了Rar工具后,如果存档是使用足够的恢复记录构建的,则BetterZip还可以重建丢失的卷,如果恢复卷可用并修复损坏的存档。当您尝试打开并提取存档或在测试期间发现错误时,BetterZip将自动修复存档。 -
如何把文件夹压缩为rar
2021-04-10 14:07:20把文件夹压缩为rar的方法:首先打开电脑,找到要压缩的目标文件;然后右击文件,在弹出选项框中选择“发送到”,再选择“压缩(zipped)文件夹”;接着右击“百度经验”压缩文件,并点击“工具”;最后在右方压缩文件...把文件夹压缩为rar的方法:首先打开电脑,找到要压缩的目标文件;然后右击文件,在弹出选项框中选择“发送到”,再选择“压缩(zipped)文件夹”;接着右击“百度经验”压缩文件,并点击“工具”;最后在右方压缩文件类型选择“rar”格式即可。
把文件夹压缩为rar的方法:
1、打开电脑,找到你要压缩的目标文件,目标文件可以是一个或多个word、excel文档。
2、鼠标选中目标文件,右击,弹出选项框,在选项框中选择“发送到”,再选择“压缩(zipped)文件夹”,单击进入。
3、然后在桌面上生成一个压缩文件夹,源文件会保留。
4、右击“百度经验”压缩文件,点开属性,在属性框中可以看见这个压缩文件是zip格式的。
5、鼠标双击“百度经验”压缩文件,打开“百度经验”压缩文件,点击“工具”。
6、弹出转换压缩文件窗口,在右方压缩文件类型选择“rar”格式,然后点击“确定”。
7、然后桌面再生成一个压缩文件,此压缩文件为rar格式的。
-
易语言模块文件压缩解压.rar
2020-03-29 20:50:18易语言模块文件压缩解压.rar -
C#批量压缩文件为zip文件类库.rar
2022-04-12 23:36:12C#批量压缩文件为zip文件类库.rar -
windows 下java调用winrar压缩文件为rar 格式
2019-04-02 01:03:44NULL 博文链接:https://thinktothings.iteye.com/blog/1436303 -
java实现文件压缩(zip\rar等)
2020-11-23 12:06:57public static void main(String args[]) { ... String format = "rar"; //返回的文件夹路径 String outPath = "F://tarTest"; try { generateFile(path, format,outPath); } catch (Exception e) {zl_v1_001:java实现文件压缩
public static void main(String args[]) { //需要处理的文件夹路径 String path = "F://tarTest"; //生成的格式 String format = "rar"; //返回的文件夹路径 String outPath = "F://tarTest"; try { generateFile(path, format,outPath); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } } /** * @[TOC](压缩)文件 * @param path 要压缩的文件路径 * @param format 生成的格式(zip、rar)d * @param outPath 输出的文件路径 */ public static void generateFile(String path, String format,String outPath) throws Exception { File file = new File(path); // 压缩文件的路径不存在 if (!file.exists()) { throw new Exception("路径 " + path + " 不存在文件!"); } // 用于存放压缩文件的文件夹 String generateFile = file.getParent() + File.separator +"CompressFile"; File compress = new File(generateFile); // 如果文件夹不存在则进行创建 if( !compress.exists() ){ compress.mkdirs(); } DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); Calendar calendar = Calendar.getInstance(); String dateName = df.format(calendar.getTime()); // 目的压缩文件 String generateFileName = outPath + File.separator + dateName + "." + format; // 输出流 FileOutputStream outputStream = new FileOutputStream(generateFileName); // 压缩输出流 ZipOutputStream zipOutputStream = new ZipOutputStream(new BufferedOutputStream(outputStream)); generateFile(zipOutputStream,file,""); System.out.println("源文件位置:" + file.getAbsolutePath() + ",目的压缩文件生成位置:" + generateFileName); // 关闭 输出流 zipOutputStream.close(); }
-
易语言模块文件压缩专家.rar
2020-03-29 20:48:25易语言模块文件压缩专家.rar -
完整版文件压缩模块.rar
2020-04-02 17:39:25完整版文件压缩模块.rar -
完整版文件压缩解压.rar
2020-04-02 17:40:21完整版文件压缩解压.rar -
RAR压缩文件破解
2018-01-27 15:47:55WinRAR/RAR 压缩文件密码的恢复工具,如果用户不小心忘记了RAR文件的密码,就可以使用它进行破解。RAR密码破解软件支持所有版本的WinRAR/RAR 压缩文件,不管WinRAR /RAR 的密码有多长和多复杂,均可恢复。 -
Mac中如何压缩文件成RAR格式
2019-05-27 16:41:00只需要以上四步,我们就可以在Mac中将文件压缩成为.rar格式了。 而且安装了Rar工具后,如果存档是使用足够的恢复记录构建的,BetterZip还可以重建丢失的卷,如果恢复卷可用并能够修复损坏的存档。 ... -
文件压缩解压.rar
2020-03-19 22:06:04文件压缩解压.rar -
Windows将文件压缩成tar-gz格式的7-zip安装包.rar
2021-07-28 11:59:45Windows将文件压缩成tar-gz格式的7-zip安装包.rar Windows将文件压缩成tar-gz格式的7-zip安装包.rar Windows将文件压缩成tar-gz格式的7-zip安装包.rar Windows将文件压缩成tar-gz格式的7-zip安装包.rar -
C#实现rar压缩与解压缩文件的方法
2020-09-03 16:43:57主要介绍了C#实现rar压缩与解压缩文件的方法,实例分析了C#利用winrar程序实现文件的压缩与解压缩的相关技巧,需要的朋友可以参考下 -
DOS压缩文件RAR与ZIP的DOS命令详解
2019-02-28 11:58:52DOS压缩文件RAR与ZIP的DOS命令详解 -
PDF压缩文件.rar
2020-05-04 23:35:16PDF压缩文件.rar -
文件压缩模块.rar
2020-03-19 22:05:14文件压缩模块.rar -
文件压缩专家.rar
2020-03-19 22:04:21文件压缩专家.rar -
世恒通用安装系统文件压缩模块.rar
2020-04-05 22:48:32世恒通用安装系统文件压缩模块.rar 世恒通用安装系统文件压缩模块.rar 世恒通用安装系统文件压缩模块.rar 世恒通用安装系统文件压缩模块.rar 世恒通用安装系统文件压缩模块.rar 世恒通用安装系统文件压缩模块.... -
Java用GZIP压缩解压文件.rar
2020-05-22 09:29:21Java用GZIP压缩解压文件.rar -
基于哈夫曼树的文件压缩与解压缩.rar
2020-06-13 17:42:46基于哈夫曼编码的文件压缩器,能有效将doc,txt文件压缩与解压缩,还原成原始文件,既不失真,用的python -
android打开rar压缩文件
2020-09-04 14:01:41主要介绍了android打开rar压缩文件示例,调用RAR for android 打开压缩文件,需要的朋友可以参考下 -
压缩成zip文件和解压缩zip文件的VB程序.rar
2021-02-28 16:58:33压缩成zip文件和解压缩zip文件的VB程序.rar -
DataNumen RAR Repair(rar压缩文件损坏修复工具)官方中文版V3.5.0 | rar文件修复大师
2021-08-30 10:16:28从而最大程度地减少文件损坏的损失,datanumen rar repair可以解决大部分用户遇到的文件损坏无法解压怎么办以及压缩文件会损坏原文件吗的问题,大部分rar压缩文件损坏问题都将得到非常理想的解决,想知道rar文件损坏... -
JAVA文件压缩与解压缩实践(源代码+论文).rar
2022-04-14 17:01:39JAVA文件压缩与解压缩实践(源代码+论文).rar -
(新建 WinRAR 压缩文件.rar
2018-01-12 11:12:36哈哈哈哈电风扇发射点发射点犯得上犯得上发的撒阿斯顿阿德