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

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

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

阅读全文

常见的压缩格式有以下四种格式:

[En]

The common compression formats are the following four formats:

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')

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

[En]

In order to maintain the flexibility of input, business judgments of different formats and different types of operations are added.

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_)

目前,该功能点有三种格式,如有必要,以后可能会对当前版本进行扩展和升级。欢迎您在评论区留言,并提供相对较新的想法。

[En]

At present, the function point is made in three formats, and the current version may be extended and upgraded later if necessary. You are welcome to leave messages in the comments area and provide relatively new ideas.

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

【往期精彩】

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

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

python多线程同步售票系统解决思路…

找几个好玩的游戏编程平台和你分享!

[En]

Find several fun game programming platforms to share with you!

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

Original: https://www.cnblogs.com/lwsbc/p/16264174.html
Author: Python集中营
Title: 怎么用python做一个解压缩小工具,以后再也不用下载各种格式的解压缩软件了…

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/499577/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球