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

PHPz
Libérer: 2023-05-13 13:43:21
avant
1710 Les gens l'ont consulté

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
Copier après la connexion

É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()
Copier après la connexion

É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()
Copier après la connexion

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

import py7zr
Copier après la connexion

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_)
Copier après la connexion

É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_)
Copier après la connexion

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

import rarfile as rar
Copier après la connexion

É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'))
Copier après la connexion

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工具:文件解压缩软件==========')
Copier après la connexion

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

format_ = input('请输入文件解压缩的格式:\n')
Copier après la connexion

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')
Copier après la connexion

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

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

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')
Copier après la connexion

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_)
Copier après la connexion

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!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal