【问题标题】:Preserve file attributes in ZipFile在 ZipFile 中保留文件属性
【发布时间】:2011-03-01 17:41:36
【问题描述】:

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

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

我当前的环境是 Windows,我在使用 ZipInfo.external_attr 方法时遇到问题。

写到ZipFile时肯定有一种标准的方式来保存文件属性?

【问题讨论】:

  • 请编辑您的问题并解释“我遇到问题”。否则,我们无能为力。
  • 原问题有效。这只是关于stackoverflow的解决方案的一个旁注,因为我没有为unix实现。不好的解释,点了。

标签: python file zip zipfile


【解决方案1】:

我遇到的问题是大量未记录的 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 应用程序根据需要创建 zipfile 并在其上运行:

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)

干杯!

【讨论】:

  • 另见stackoverflow.com/questions/434641/…。您对未记录的 external_attr 字段是正确的。
  • 我在 Windows 中使用“minizip”来保留所有文件属性时遇到了同样的问题。我使用了以下代码: DWORD attribs = GetFileAttributesW(szOut); zi.external_fa = 属性;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
相关资源
最近更新 更多