ホームページ  >  記事  >  バックエンド開発  >  Pythonをベースにしたファイル解凍ツールの作り方

Pythonをベースにしたファイル解凍ツールの作り方

PHPz
PHPz転載
2023-05-13 13:43:211718ブラウズ

多くの場合、圧縮形式が異なるため、ファイルを解凍するときに、異なるファイルを処理するために異なる解凍ツールをダウンロードする必要があるため、デスクトップ上に 3 つまたは 4 種類の圧縮ツールが存在するため、Python を使用してこれを実行します。さまざまな一般的な形式のファイルを解凍するための小さなツール。

Pythonをベースにしたファイル解凍ツールの作り方

一般的な圧縮形式は主に以下の 4 形式です。

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('==========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_)

現在、ファンクション ポイントは 3 つの形式で作成されていますが、後で必要に応じて、現在のバージョンが拡張およびアップグレードされる可能性があります。

以上がPythonをベースにしたファイル解凍ツールの作り方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。