在不丢失原始创建日期的情况下解压缩多个文件

Unzipping multiple file without loosing the original creation date

我正在使用 python 解压缩数百个压缩文件,如 所述。

import os
import zipfile

base_dir = '/users/me/myFile' # absolute path to the data folder
extension = ".zip"

os.chdir(base_dir)  # change directory from working dir to dir with files


def unpack_all_in_dir(_dir):
    for item in os.listdir(_dir):  # loop through items in dir
        abs_path = os.path.join(_dir, item)  # absolute path of dir or file
        if item.endswith(extension):  # check for ".zip" extension
            file_name = os.path.abspath(abs_path)  # get full path of file
            zip_ref = zipfile.ZipFile(file_name)  # create zipfile object
            zip_ref.extractall(_dir)  # extract file to dir
            zip_ref.close()  # close file
        elif os.path.isdir(abs_path):
            unpack_all_in_dir(abs_path)  # recurse this function with inner folder


unpack_all_in_dir(base_dir)

当我手动解压缩一个文件时,它会得到它的原始修改日期,而当用代码解压时,我会松开这个 - 修改日期变成现在的日期。

有什么方法可以保留原始创建日期吗?

我不太了解 zipfile,但根据 this thread about modification date 的说法,保存元数据很痛苦。

您可以通过调用某些 CLI 归档程序作为子进程来解决问题,但您需要确保它已安装在目标系统上。实际上,我曾经不得不将 7zip 与我的脚本捆绑在一起,因为 Python 库,甚至是第三方库

存在一些问题

实际上手动打开多个 zip 文件会保留日期,至少在 macOS 上是这样。 搜索需要解压的文件,select -> 打开。