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

时间:2013-11-25 15:21:05

标签: python zip setuptools egg

我如何使用Python创建Zip文件,因为它们的文件内容是完全相同的?

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

最终,我想使用Setuptools(python setup.py bdist_egg)创建Python egg,它们为未更改的打包内容生成相同的*.egg文件。现在,每当我重新创建一个Egg(在自动构建过程中)时,egg文件每次都会更改(因为setuptools会在每次调用时重新打开包内容)。

Setuptools uses 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]

代码输出TrueFalse,而我想TrueTrue

0 个答案:

没有答案