gpt4 book ai didi

python - 在 ZipFile 中保留文件属性

转载 作者:太空狗 更新时间:2023-10-30 01:24:20 27 4
gpt4 key购买 nike

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

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

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

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

最佳答案

我遇到的问题是大量未记录的 zipfile.ZipInfo.external_attr。我找到的关于此对象的所有示例都引用了 *nix 文件权限样式。

我的实现将在 Windows 上运行。

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

Windows 只读 ZipInfo.external_attr 的魔数(Magic Number)是 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)

干杯!

关于python - 在 ZipFile 中保留文件属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007233/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com