保留ZipFile中的文件属性

时间:2010-06-09 15:24:26

标签: python file zip zipfile

我正在寻找一种方法来保存写入zipfile.ZipFile实例的文件的文件属性(例如只读)。

我添加到zip存档的文件会重置其文件属性,例如。使用zip应用程序检查存档时以及解压缩后,只读标志消失。

我目前的环境是Windows,我遇到了ZipInfo.external_attr方法的问题。

在写入ZipFile时,肯定有一种保留文件属性的标准方法吗?

1 个答案:

答案 0 :(得分:3)

我遇到的问题是严重无文档的zipfile.ZipInfo.external_attr。我发现此对象的所有示例都被重新加入* nix文件权限样式。

我的实现将在Windows上运行。

所以我进行了一些“逆向工程”。嘿。

Windows只读ZipInfo.external_attr的幻数是33。

如:

z = zipfile.ZipFile(targetFile, 'w')
(path, filename) = os.path.split(sourceFile)
bytes = file(sourceFile, 'rb')
info = zipfile.ZipInfo(filename)
info.external_attr = 33
z.writestr(info, bytes.read())
bytes.close()
z.close()

如果你需要为另一种类型的属性找到正确的值,可以使用一些windows zip app创建zip文件并在其上运行:

z = zipfile.ZipFile(sourceFile, 'r')
info = z.getinfo('fileToTest.ext')
print ("create_system", info.create_system)
print ("external_attr", info.external_attr)
print ("internal_attr", info.internal_attr)

干杯!