我想获取压缩文件夹中文件的创建日期。
我知道没有zip,可以使用os.path.getctime()
函数来实现,并且可以使用ZipInfo.date_time
提取压缩文件夹中文件的最后修改日期。但是ZipInfo
似乎没有办法提取创建日期。
此外,我尝试使用ZipInfo
来获取修改日期,如下所示。
# zip_file is the .zip folder
# screenshot_filename is the file inside .zip
with ZipFile(zip_file, 'r') as my_zip:
my_zip.getinfo(screenshot_filename)
ZipInfo
对象的结果不包含任何date_time
信息。下面是示例。
<ZipInfo filename='SCREEN CAP/SS.png' compress_type=deflate external_attr=0x20 file_size=555790 compress_size=504859>
那么,我做错了吗,还是有什么更好的方法可以提取压缩文件夹中文件的创建日期(如果无法创建日期,则可以提取修改日期)?
更新:
我得到了从date_time
获取最后修改时间/ ZipInfo
的答案。显然,尽管date_time
没有在对象中列出,但我们只需访问属性即可获得它,即
my_zip.getinfo(screenshot_filename).date_time
但是,我仍在寻找获得创建日期的答案。
答案 0 :(得分:0)
默认情况下,ZIP文件仅存储文件的修改日期(with 2 seconds precision,继承自FAT file system limitations)。任何其他元数据都可以存储在extra
字段中。
注意:Python不会解码
extra
字段数据,因此您必须根据以下文档自行解析!
extra
字段由多个紧随彼此的数据块组成。以下额外的块可用于更精确地存储文件创建或修改日期:
(有关更多信息,请参见Info-ZIP's extra field description)
注意:从Python 3.7
zipfile
开始,模块仅从ZIP的中央目录文件头读取文件信息,因此您可能无法从某些第三方多余的块中获取日期。>
请参阅this answer设置提取日期的设置日期。