温馨提示×

Python解压zip文件并保留文件属性

小樊
82
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