不含任何元数据的zip文件

时间:2019-06-14 03:15:59

标签: python zip metadata

我想找到一种简单的方法来压缩一堆没有任何文件元数据的文件(例如时间戳)。 zip命令似乎总是保留元数据。我看不到禁用元数据的方法。

我希望解决方案是命令或最多python脚本。谢谢。

1 个答案:

答案 0 :(得分:0)

一些帖子已经指出,zip标头中的大多数元数据字段都必须存在。如果每次压缩的文件内容都是相同的,则唯一不同的字段就是时间戳。

可以通过创建ZipInfo对象并更改时间戳来将时间戳强制为特定值。

这是概念证明

import zipfile

file = zipfile.ZipFile("test.zip", "w")
name = "/tmp/testfile.txt"
zi = zipfile.ZipInfo.from_file(name)
zi.date_time = (1980,1,1,0,0,0)

with file.open(zi, mode='w') as member:
    with open(name, mode='rb') as file:
        fileContent = file.read()
        member.write(fileContent)

以上代码创建了test.zip,其时间戳记与1980年1月1日硬连接。

$ unzip -l test.zip
Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
      307  1980-01-01 00:00   tmp/testfile.txt
---------                     -------
      307                     1 file