Python 如何为相同的文件内容创建相同的ZipFiles/Eggs

Python 如何为相同的文件内容创建相同的ZipFiles/Eggs,python,zip,setuptools,egg,Python,Zip,Setuptools,Egg,如果文件内容相同,如何使用Python创建完全相同的Zip文件 PythonZipFile模块(甚至可能是底层的Zip库)将在归档文件中存储文件修改日期,这将导致生成的Zip文件存在差异 最后,我希望使用Setuptools(Python setup.py bdist_egg)创建Python egg,这些工具为未更改的打包内容生成相同的*.egg文件。现在,每当我(在自动构建过程中)重新创建一个Egg时,Egg文件每次都会更改(因为setuptools会在每次调用时重新复制包内容) Setup

如果文件内容相同,如何使用Python创建完全相同的Zip文件

Python
ZipFile
模块(甚至可能是底层的Zip库)将在归档文件中存储文件修改日期,这将导致生成的Zip文件存在差异

最后,我希望使用Setuptools(
Python setup.py bdist_egg
)创建Python egg,这些工具为未更改的打包内容生成相同的
*.egg
文件。现在,每当我(在自动构建过程中)重新创建一个Egg时,Egg文件每次都会更改(因为setuptools会在每次调用时重新复制包内容)

Setuptools支持Python ZipFile模块

import os, time, hashlib
from zipfile import ZipFile

tn = 'test.txt'
zn0 = "z0.zip"
zn1 = "z1.zip"
zn2 = "z2.zip"

with open(tn, 'w') as t:
   t.write("hello")

z0 = ZipFile(zn0, 'w')
z1 = ZipFile(zn1, 'w')
z2 = ZipFile(zn2, 'w')

z0.write(tn)
z1.write(tn)

time.sleep(2)
os.system("touch %s" % tn)

z2.write(tn)

h = []
for i in xrange(3):
   m = hashlib.sha256()
   m.update(open('z%d.zip' % i, 'rb').read())
   h.append(m.hexdigest())

print h[0] == h[1]
print h[0] == h[2]
代码输出
True
False
,而我想要
True
True