溫馨提示×

Python解壓zip文件并保留文件屬性

小樊
129
2024-12-07 13:41:42
欄目: 編程語言

要使用Python解壓ZIP文件并保留文件屬性,可以使用zipfile模塊

import zipfile
import os
from datetime import datetime

def zip_info(file_info):
    return {
        'filename': file_info.filename,
        'datetime': datetime.fromtimestamp(file_info.date_time).strftime('%Y-%m-%d %H:%M:%S'),
        'size': file_info.file_size,
        'compression': file_info.compress_size,
        'method': file_info.compress_type
    }

def extract_zip(zip_path, extract_to):
    with zipfile.ZipFile(zip_path, 'r') as zip_ref:
        zip_ref.extractall(extract_to)
        print(f"Extracted {zip_ref.namelist()}")

        extracted_files = []
        for file_info in zip_ref.infolist():
            extracted_file = {
                'filename': file_info.filename,
                'datetime': zip_info(file_info)['datetime'],
                'size': zip_info(file_info)['size'],
                'compression': zip_info(file_info)['compression'],
                'method': zip_info(file_info)['method']
            }
            extracted_files.append(extracted_file)

        return extracted_files

if __name__ == "__main__":
    zip_path = 'example.zip'
    extract_to = 'extracted_files'

    if not os.path.exists(extract_to):
        os.makedirs(extract_to)

    extracted_files = extract_zip(zip_path, extract_to)
    print("Extracted files with attributes:")
    for file in extracted_files:
        print(file)

這個示例中,我們首先定義了一個zip_info函數,它接收一個zipfile.ZipInfo對象并返回一個包含文件屬性(如文件名、時間戳、大小、壓縮方法和壓縮類型)的字典。然后,我們定義了一個extract_zip函數,它接收一個ZIP文件路徑和一個解壓目標目錄。這個函數會解壓ZIP文件并將文件保存到目標目錄,同時保留文件的屬性。

__main__部分,我們指定了ZIP文件的路徑和解壓目標目錄,然后調用extract_zip函數解壓文件并打印提取的文件及其屬性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女