关于python:怎么用python做一个解压缩小工具以后再也不用下载各种格式的解压缩软件了

30次阅读

共计 2621 个字符,预计需要花费 7 分钟才能阅读完成。

常常因为各种压缩格局的不一样用到文件的解压缩时就须要下载不同的解压缩工具去解决不同的文件,以至于桌面上的压缩工具就有三四种,于是应用 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_)

目前性能点是做了三种格局,前期若是须要可能会扩大降级以后的版本。欢送大家在评论区留言,提供比拟新的思路~

【往期精彩】

python 中最简略的 turtle 绘图:奥运五环!

常识汇总:python 办公自动化应该学习哪些内容?

python 多线程同步售票零碎解决思路 …

发现几个好玩的游戏编程平台,与君共勉!

python 四个性能检测工具,包含函数的运行内存、工夫等等 …

正文完
 0