Maison  >  Article  >  développement back-end  >  Comment créer un outil de décompression de fichiers basé sur Python

Comment créer un outil de décompression de fichiers basé sur Python

PHPz
PHPzavant
2023-05-13 13:43:211626parcourir

Souvent, en raison des différents formats de compression, lors de la décompression de fichiers, vous devez télécharger différents outils de décompression pour traiter différents fichiers, de sorte qu'il y ait trois ou quatre outils de compression sur le bureau, j'ai donc utilisé Python pour en créer un. Contient de petits outils de décompression fichiers dans divers formats courants.

Comment créer un outil de décompression de fichiers basé sur Python

Les formats de compression courants sont principalement les quatre formats suivants :

Les fichiers compressés au format Zip sont généralement décompressés à l'aide d'un logiciel de compression 360.

Les fichiers compressés au format tar.gz sont généralement décompressés à l'aide de la commande tar sur les systèmes Linux.

Les fichiers compressés au format Rar sont généralement décompressés à l'aide d'un logiciel de compression rar.

Les fichiers compressés au format 7z sont généralement décompressés à l'aide d'un logiciel de compression 7-zip.

Importez une bibliothèque non standard pour le traitement de décompression au format zip.

import os
import zipfile as zip

Écrire la fonction de compression de fichiers au format de décompression 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()

Écrivez une fonction de décompression de fichier au format de décompression 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()

Importez une bibliothèque non standard pour le traitement de décompression au format 7z.

import py7zr

Fonction de compression de fichiers d'écriture au format de décompression 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_)

Écrivez une fonction de décompression de fichier au format de décompression 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_)

Importez une bibliothèque non standard pour le traitement de décompression au format rar.

import rarfile as rar

Écrivez une fonction de décompression de fichier au format de décompression 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'))

Allons droit au but. Tout d'abord, utilisez la fonction d'impression pour imprimer les options du menu, ce qui permet à l'utilisateur de faire des sélections de menu après avoir démarré le logiciel.

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

Utilisez la fonction d'entrée pour recevoir le format de décompression de fichier saisi par l'utilisateur.

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

Utilisez la fonction d'entrée pour recevoir le type d'opération de fichier (compression/décompression) saisi par l'utilisateur.

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

Utilisez la fonction d'entrée pour recevoir le chemin du fichier qui doit être utilisé par l'utilisateur.

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

Utilisez la fonction d'entrée pour recevoir les entrées de l'utilisateur pour le chemin cible du nouveau fichier généré.

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

Afin de maintenir la flexibilité de saisie, ajoutez des jugements commerciaux dans différents formats et différents types d'opérations.

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

Actuellement, les points de fonction sont réalisés en trois formats Si nécessaire ultérieurement, la version actuelle peut être étendue et mise à niveau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer