在不丢失原始创建日期的情况下解压缩多个文件
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 -> 打开。
我正在使用 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 -> 打开。