用Python制作一个文件解压缩工具

news2024/11/17 23:49:15

经常由于各种压缩格式的不一样用到文件的解压缩时就需要下载不同的解压缩工具去处理不同的文件,以至于桌面上的压缩工具就有三四种,于是使用python做了一个包含各种常见格式的文件解压缩的小工具。

在这里插入图片描述
常见的压缩格式主要是下面的四种格式:

zip 格式的压缩文件,一般使用360压缩软件进行解压缩。

tar.gz 格式的压缩文件,一般是在linux系统上面使用tar命令进行解压缩。

rar 格式的压缩文件,一般使用rar压缩软件进行解压缩。

7z 格式的压缩文件,一般使用7-zip压缩软件进行解压缩。

导入zip格式的解压缩处理的非标准库。

import os
import zipfile as zip

编写zip解压缩格式的文件压缩函数。

def do_zip(source_, target_file):
    '''
    zip文件压缩
    :param source_: 原始文件路径
    :param target_file: 目标文件路径
    :return:
    '''
    zip_file = zip.ZipFile(target_file, 'w')
    pre_len = len(os.path.dirname(source_))
    for parent, dirnames, filenames in os.walk(source_):
        for filename in filenames:
            print(f'{filename}')
            path_file = os.path.join(parent, filename)
            arcname = path_file[pre_len:].strip(os.path.sep)
            zip_file.write(path_file, arcname)

    zip_file.close()

编写zip解压缩格式的文件解压缩函数。

def un_zip(source_file, target_):
    '''
    zip文件解压缩
    :param source_file: 原始文件路径
    :param target_: 目标文件路径
    :return:
    '''
    zip_file = zip.ZipFile(source_file)
    if os.path.isdir(target_):
        pass
    else:
        os.mkdir(target_)
    for names in zip_file.namelist():
        zip_file.extract(names, target_)
    zip_file.close()

导入7z格式的解压缩处理的非标准库。

import py7zr

编写7z解压缩格式的文件压缩函数。

def do_7z(source_, target_file):
    '''
    7z文件压缩
    :param source_:
    :param target_file:
    :return:
    '''
    with py7zr.SevenZipFile(target_file, 'r') as file:
        file.extractall(path=source_)

编写7z解压缩格式的文件解压缩函数。

def un_7z(source_file, target_):
    '''
    7z文件解压缩
    :param source_file:
    :param target_:
    :return:
    '''
    with py7zr.SevenZipFile(source_file, 'w') as file:
        file.writeall(target_)

导入rar格式的解压缩处理的非标准库。

import rarfile as rar

编写rar解压缩格式的文件解压缩函数。

def un_rar(source_file, target_):
    '''
    rar文件解压缩
    :param source_file: 原始文件
    :param target_: 目标文件路径
    :return:
    '''
    obj_ = rar.RarFile(source_file.decode('utf-8'))
    obj_.extractall(target_.decode('utf-8'))

接下来开始进入正题了,首先使用print函数打印一下菜单选项,可以让用户在启动软件后进行菜单的选择。

print('==========PYTHON工具:文件解压缩软件==========')
print('说明:目前支持zip、7z、rar格式')
print('1、文件解压缩格式:zip/rar/7z')
print('2、文件操作类型(压缩/解压):Y/N')
print('3、文件路径选择,需要输入相应的操作文件路径')
print('==========PYTHON工具:文件解压缩软件==========')

使用input函数接收用户输入的文件解压缩格式。

format_ = input('请输入文件解压缩的格式:\n')

使用input函数接收用户输入的文件操作类型(压缩/解压)。

type_ = input('请输入文件操作的类型:\n')

使用input函数接收用户输入的需要操作的文件路径。

source_ = input('请输入原始文件的存储路径(文件或目录):\n')

使用input函数接收用户输入的生成的新文件的目标路径。

target_ = input('请输入目标文件的存储路径(文件或目录):\n')

为了保持输入的灵活性,加入不同格式不同操作类型的业务判断。

if format_ == 'zip' and type_ == 'Y':
    do_zip(source_, target_)
elif format_ == 'zip' and type_ == 'N':
    un_zip(source_, target_)
elif format_ == 'rar' and type_ == 'Y':
    un_zip(source_, target_)
elif format_ == 'rar' and type_ == 'N':
    un_zip(source_, target_)
elif format_ == '7z' and type_ == 'Y':
    un_zip(source_, target_)
elif format_ == '7z' and type_ == 'N':
    un_zip(source_, target_)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128720.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

New File Format:SpreadJS v16 Crack

New File Format 有你需要的更新内容,请大家及时更新到最新版 SpreadJS V16 has just released, and with it, Ω578867473 some exciting new features, including a new SpreadJS file format and enhancements to the TableSheet, Designer, Calculation, and W…

基于51单片机的数字电压表(TCL549)(Proteus仿真+程序)

编号:31 基于51单片机的数字电压表(TCL549) 功能描述: 本系统由51单片机最小系统TCL549模块一路模拟量输入模块液晶1602显示模块 1、主控制器是89C52单片机 2、TCL54模数转换器进行A/D转换,读取电压一路数据&#xf…

VSCode(Flutter开发)使用的 4 个 技巧

1.更清晰的文件夹结构 在创建一个新的 flutter 项目后,有太多的文件。但是我们可以在 VSCode 中用非常简单的步骤来构造这些文件: 打开命令面板(Ctrl/Cmd Shift P) 键入“首选项: 打开设置(JSON)” 将以下代码行添加到 setings.json: { "explorer.fileNes…

yapi的安装

Yapi的安装 Yapi是一款不错的接口管理软件,我主要用它来进行接口Mock。 Yapi安装所需环境: Node.js(7.6)Mongodb(2.6)git 各环境安装地址: git:https://git-scm.com/downloadsN…

[极客大挑战 2019]Buy Flag1(BUUCTF)

前言: 这篇文章还是是为了帮助一些 像我这样的菜鸟 找到简单的题解 题目描述 解题工具: 我爱用edit this cookie2和hackerbar, 当然也可以burpsuite和fiddler抓包 解题过程: 看到他说flag要100000000 MONEY, 还要是Cuits students, …

windows11 elasticsearch-head 插件安装

1.elasticsearch-head 插件介绍 elasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对elasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对Elastic…

DaVinci:限定器之蒙版优化

调色页面:限定器Color:Qualifier使用限定器等工具进行抠像后,所得到的遮罩 Matte(又称为“蒙版”)可能会存在诸多问题,比如边缘过于锐利或呈锯齿状、遍布杂点(噪点)或中间有不规则的…

【pandas】教程:5-从已有数据中创建新列

Pandas 从已有的数据列中创建新列 加载数据 本节使用的数据为 data/air_quality_no2.csv,链接为 pandas案例和教程所使用的数据-机器学习文档类资源-CSDN文库 通过 假设在25,1013hPa 压力下密度为 1.882 air_quality["london_mg_per_cubic"]…

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口以及telnet命令连接Dubbo服务

java调用dubbo服务接口_Dubbo使用invoke指令来调用dubbo接口前言正文Mac使用telnet命令提示:command not found,Mac安装telnet 命令一、telnet是什么?二、telnet命令连接Dubbo服务显示列表 – ls显示服务端口和连接 – ps跳转服务 – cd显示当…

[虚幻引擎][UE][UE5]在UE5中使用线条画一颗简单的三维圣诞树(练习向)

TOP 一、前言 搞得不好看,简单了解一下叭。主要是在三维中使用线条。需要理解圆的方程式。 (小声逼逼,后来还想搞个三维圆锥螺旋线写个点球点缀一下的,结果上网一搜没人给出方程式,只好不了了之了,有哪位…

Linux之从命令行管理文件

文章目录1. 使用ln命令,创建grading/grade1文件的硬链接,取名为/hardlink2. 使用ls -l 命令查看grading/grade1文件的链接数3. 使用ln -s命令,创建grading/grade2文件的软链接,取名为student/softlink4. 使用ls -l 命令查看studen…

简单随机多边形切割方案

过程化处理中希望能够对某块区域生成随机多边形,以及再切割成子多边形 各种尝试之后发现一种通过python、turtle、pyclipper实现的简单方案 随机多边形 采用python直接生成随机多边形,算法原理:将360度随机拆分成各个角度,再通过…

过年不让放炮,我用Python实现了1000响大地红的特效

同志们,马上(后天)就要2023年啦,您有没有对象啦哈哈哈 咳咳,搞错了~~再来 新的一年,新的气象,穿上新衣逛街 俗话说得好,这所谓放鞭炮就是来压邪祟,除恶的,…

web前端-javascript-DOM和BOM详解

文章目录DOM 和 BOM1. DOM2. BOM2.1 BOM 简介2.2 分类2.3 语法1) Navigator 当前浏览器2)Histry 向前或向后翻页3)Location 地址栏的信息DOM 和 BOM 1. DOM 浏览器已经为我们提供了文档节点的对象,这个对象是 window 对象的属性可以在页面中…

2023北京/深圳NPDP产品经理入门到精通班招生简章

NPDP产品经理国际资格认证是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 我们针对互联网时代的个人、互联网企业、与传统企业推出一系列学习。 课程从…

喜上加喜|怿星科技荣获高工智能金球奖两项大奖

12月2日晚,2022第六届高工智能汽车金球奖年度颁奖典礼在上海虹桥正式开幕,来自行业内的100多家头部企业出席了此次盛会。 金球奖是由高工智能汽车组织的聚焦于汽车智能网联产业链的年度颁奖盛典。参选企业覆盖了汽车智能化创新公司、人工智能创新公司、传…

怎样把图片转化成jpeg格式?jpeg格式转换器分享

我们保存照片时发现有时候保存的图片为png格式或webp格式,而上传到其他平台的时候会有jpeg图片格式要求,那么就需要将图片转为jpeg,如何将图片格式转换(在线图片格式转换器(jpg、png、gif、webp、bmp、tiff&#xff09…

GoF23——工厂模式

✯ 面向对象设计原则 对接口编程而不是对实现编程优先使用对象组合而不是继承介绍说明 工厂模式(Factory Pattern)属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑&am…

Java8并行流---并行数据处理与性能

Java8并行流---并行数据处理与性能0.主要内容1.并行流1.1将顺序流转换为并行流附录附录.10.主要内容 主要内容 用并行流并行处理数据 并行流的性能分析 分支/合并框架 使用Spliterator分割流 1.并行流 调用parallelStream方法来把集合转换为并行流。并行流就是一个把内容分成多…

pytorch应用(入门2) 一维线性回归

目录nn.Module(模组)torch.optim (优化)模型的保存和加载一维线性回归代码如下:均方差损失函数nn.MSELoss()model.parameters()的理解与使用torch.autograd.Variableoptimizer.zero_grad()model.eval的作用深度学习方法——pytorch下GPU与CPU…