提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
    • 1.引入库

前言

因为下载了一批珍惜资源,需要尽快处理掉,所以搞了一个相对高效的解压脚本。脚本调用bandizip 的bz.exe,只解压过7z,未测试zip、tar、rar等格式,不过应该没问题。(需要添加后缀检测)
用了多进程,有点效果。

1.引入库

代码如下(示例):


# coding="utf-8"
#批量处理压缩文件名、解压缩与去除文件夹
import os
import re
import py7zr
import multiprocessing
from multiprocessing.pool import Pool#这里允许多个密码,毕竟不能指望大量压缩文件密码相同。密码不多的话基本不影响速度。
#如果不知道密码,建议写个脚本暴力破解或者再去找找?
passes=[pw1,pw2]
#解压文件根目录
dirname=[filepath1,filepath2]
def unzip(contents,deep=0):# isdir用于判断路径是否为目录,是目录的话需要进一步的循环读取#文件夹下仅一个文件则,文件上移(去除冗余文件夹)topdir=os.path.dirname(contents)#文件夹下只有一个文件则文件上移,这里没认真写if re.findall(r"请直接保存文件夹",topdir):for i in os.listdir(topdir):curcontents=os.path.join(os.path.dirname(contents),i)newcontents=os.path.join(os.path.dirname(topdir),i)os.rename(curcontents,newcontents)contents=os.path.join(os.path.dirname(topdir),os.path.basename(contents))topdir=os.path.dirname(contents)#遍历子文件夹if os.path.isdir(contents):paths=os.listdir(contents)#去除空文件夹if not paths:os.rmdir(contents)returnfor i in paths:#文件夹遍历层数限制2层if deep<1:unzip(os.path.join(contents, i), deep+1)else:#修改压缩文件后缀if re.findall(r"去掉",contents):os.rename(contents,re.sub(r"去掉","",contents))#去广告if contents[-3:]=='url' or contents[-3:]=='URL' or contents[-3:]=='防被骗' or contents[-3:]=='com':os.remove(contents)#处理7z压缩,其他自己添加if contents[-6:]=='7z.001' or contents[-2:]=='7z':#遍历密码解压,成功则删除压缩文件print("当前解压:"+contents)for p in passes:#>nul 2>nul cmd输出屏蔽, -aoa 解压时全部覆盖cmd=r'F:\Bandizip\bz.exe x -aoa -o:'+topdir+' -t:10 -p:"'+p +'" '+contents + " >nul 2>nul"#print(cmd)if not os.system(cmd):os.remove(contents)#7z.001等默认最多到009,更多自己改if contents[-6:]=='7z.001':for i in range(8):if os.path.exists(contents[:-1]+str(i+2)):os.remove(contents[:-1]+str(i+2))else:breakbreak#py7zr.SevenZipFile(contents, mode='r', password=p).extractall(os.path.dirname(contents))
# 单个进程分配任务
def process_send(dirs,g,mutex):for i in range(len(dirs)):mutex.acquire()g.value+=1mutex.release()global_num=g.valueif global_num>len(dirs):returncontents=dirs[global_num-1]unzip(contents,0)def init(l):global locklock = ldef main(dirname):mutex = multiprocessing.Manager().Lock()g=multiprocessing.Manager().Value("i",0)dirs=os.listdir(dirname)dirs=[os.path.join(dirname,x) for x in dirs]#这里调用了多进程,进程越多越好,单块机械硬盘读写速度上限60M左右,更快建议固态或者放多个硬盘同时解压p=Pool(processes=10)for i in range(10):p.apply_async(process_send,(dirs,g,mutex))p.close()p.join()if __name__== '__main__':main(dirname[1])

实测两块硬盘速度100m左右。
据说bandizip解压7z速度比其他慢1.5倍-1倍,就不折腾了,凑活吧。


python批量解压7z等相关推荐

  1. python批量解压文件_python 批量解压压缩文件的实例代码

    下面给大家介绍python 批量解压压缩文件的实例代码,代码如下所述: #/usr/bin/python#coding=utf-8import os,sys import zipfile open_p ...

  2. python批量解压批量压缩文件夹(逐个)

    系列文章目录 文章目录 系列文章目录 前言 一.python批量解压 二.python批量压缩 总结 前言 一.python批量解压 提示:如果是重要数据解压前请先备份,解压后会覆盖原压缩文件!! 解 ...

  3. linux 批量解压.7z脚本

    7z 这样做会降低速度,但是好处是可以不用每次输入命令,可以干别的,但是如果中间解压出现问题,可能会有问题,必须全部解压完成以后,才能成功解压.不然一个都不能解压好. # 这样会在当前文件夹下新建一个 ...

  4. python批量解压文件,python批量解压zip文件的方法

    python怎样压缩和解压缩ZIP文件 说明 python使用zipfile模块来压缩和解压zip文件 才能最好于孤独中培养:品格最好在世界的汹涌波涛中形成. 代码 import os,os.path ...

  5. python解压7z文件_Python调用7zip命令实现文件批量解压

    Python调用7zip命令实现文件批量解压 1.输入压缩文件所在的路径 2.可以在代码中修改解压到的文件路径和所需要解压的类型,列入,解压文件夹下面所有的mp4格式的文件 3.cmd 指的就是Pyt ...

  6. Python解压7z压缩文件

    Python解压7z压缩文件 可以使用py7zr库: import py7zrarchive = py7zr.SevenZipFile(r'xxx.7z', mode='r')archive.extr ...

  7. Python压缩解压zip,Django下载zip文件

    Python压缩解压zip 压缩 import zipfile def convert_zip(zip_path, save_path):'''# zip_path 要压缩文件的路径# save_pa ...

  8. Linux命令:tar命令批量解压方法总结

    tar命令批量解压方法总结 (2010-05-24 17:48:46) 转载▼ 标签: tar 批量解压 杂谈 分类: linux学习 由于linux的tar命令不支持批量解压,所以很多网友编写了好多 ...

  9. java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件

    7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...

最新文章

  1. FDA转向AI加快药物研发和审批速度
  2. springcloud 微服务鉴权_我对微服务、SpringCloud、k8s、Istio的一些杂想
  3. CentOS6.3 下启动Oracle service和listener
  4. oracle:表空间使用率,表空间扩容
  5. 【Linux笔记(001) 】-- centos7 系统目录结构与文件
  6. Python两个版本共存时,命令行升级pip
  7. Cocos 技术派:实时竞技小游戏技术实现分享
  8. JavaScript 获取 当前日期和三十天以前日期
  9. 路由器再度躺枪:主流厂商设备中被发现后门
  10. html转换pdf中文失败,解决html导出pdf中文乱码问题的正确姿势
  11. Android入门(十一)SQLite CURD
  12. mpandroidchart 设置x轴数据_跟小白学Python数据分析——绘制条形图
  13. SM1、SM2 、SM3、 SM4算法
  14. 终端conda install安装包 import 错误_Tecplot 360 2017软件安装包+安装教程
  15. 常见坐标系经纬度转换
  16. 【kali】WLAN识别
  17. VS2008显示当前页面的脚本发生错误的处理方法
  18. linux命令 sys,syslinux常用菜單命令
  19. ROS2的create_publisher参数详解
  20. Java架构师-集群:单体部署 ->Nginx 集群【网关、反向代理、动静分离、负载均衡】 -> Keepalived“高可用”组件 -> LVS负载均衡【LVS的并发量是Nginx的几十倍】

热门文章

  1. MongoDB数据库下载和安装(详细步骤)
  2. 新品速递:有了这些家具,50平房间秒变90平!
  3. 1400191-52-7,DBCO-Sulfo-NHS ester是一种含有DBCO部分的水溶性硫化试剂
  4. 在word中添加字体;合并PPT
  5. 【gdx ashley】入门
  6. Unity3D数学之坐标系,向量与四元素
  7. 用java写一个工作日API
  8. ABP5.0更改默认本地化语言为中文
  9. react node服务器_适用于初学者的服务器上的React:构建通用的React和Node应用程序...
  10. 基于回归神经网络的中文语句模型实践(Python+Tensorflow+阿里云)