Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara membuat alat penyahmampatan fail berdasarkan Python

Cara membuat alat penyahmampatan fail berdasarkan Python

PHPz
PHPzke hadapan
2023-05-13 13:43:211626semak imbas

Disebabkan oleh format pemampatan yang berbeza, selalunya perlu memuat turun alat penyahmampatan yang berbeza untuk memproses fail yang berbeza apabila menyahmampat fail Akibatnya, terdapat tiga atau empat jenis alat pemampatan pada desktop, jadi saya menggunakan python untuk melakukannya ia. Alat kecil untuk menyahmampat fail dalam pelbagai format biasa.

Cara membuat alat penyahmampatan fail berdasarkan Python

Format pemampatan biasa adalah terutamanya empat format berikut:

Fail mampat format zip biasanya dinyahmampat menggunakan perisian pemampatan 360.

Fail termampat dalam format tar.gz biasanya dinyahmampat menggunakan arahan tar pada sistem Linux.

Fail mampat dalam format rar biasanya dinyahmampat menggunakan perisian mampatan rar.

Fail mampat dalam format 7z biasanya dinyahmampat menggunakan perisian mampatan 7-zip.

Import perpustakaan bukan standard untuk pemprosesan penyahmampatan dalam format zip.

import os
import zipfile as zip

Tulis fungsi pemampatan fail dalam format penyahmampatan 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()

Tulis fungsi penyahmampatan fail dalam format penyahmampatan 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()

Import perpustakaan bukan standard untuk pemprosesan penyahmampatan dalam format 7z.

import py7zr

Tulis fungsi pemampatan fail dalam format penyahmampatan 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_)

Tulis fungsi penyahmampatan fail dalam format penyahmampatan 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_)

Import perpustakaan bukan standard untuk pemprosesan penyahmampatan dalam format rar.

import rarfile as rar

Tulis fungsi penyahmampatan fail dalam format penyahmampatan 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'))

Mula-mula, gunakan fungsi cetakan untuk mencetak pilihan menu, yang membolehkan pengguna membuat pilihan menu selepas memulakan perisian.

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

Gunakan fungsi input untuk menerima input format penyahmampatan fail oleh pengguna.

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

Gunakan fungsi input untuk menerima input pengguna bagi jenis operasi fail (mampatan/penyahmampatan).

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

Gunakan fungsi input untuk menerima laluan fail yang perlu dikendalikan input oleh pengguna.

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

Gunakan fungsi input untuk menerima input pengguna bagi laluan sasaran bagi fail baharu yang dijana.

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

Untuk mengekalkan fleksibiliti input, pertimbangan perniagaan dalam format yang berbeza dan jenis operasi yang berbeza ditambah.

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

Titik fungsi semasa adalah untuk mencipta tiga format Jika perlu kemudian, versi semasa boleh dikembangkan dan dinaik taraf.

Atas ialah kandungan terperinci Cara membuat alat penyahmampatan fail berdasarkan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam