在工作中遇到的一个问题,如何读取 zip 压缩包内,带权限属性的文件列表?例如我有一个 744 权限的文件,想要添加到 zip 包中,同时想修改它的权限为 755,网上找到的代码实现为:
buffer = "path/filename.zip" # zip filename to write (or file-like object)
name = "folder/data.txt" # name of file inside zip
bytes = "blah blah blah" # contents of file inside zip
zip = zipfile.ZipFile(buffer, "w", zipfile.ZIP_DEFLATED)
info = zipfile.ZipInfo(name)
info.external_attr = 0o755 << 16L # give full access to included file
zip.writestr(info, bytes)
zip.close()
其中设置 zip 包内文件属性的关键代码是这一行:
info.external_attr = 0o755 << 16L
在 Python 的官方文档中,没有 external_attr 值的说明,只能从网上查找资料。
假如现在已经有一个 zip 包,我想要列出包内文件,以及文件的权限属性如 755,这时候就需要对 external_attr 进行翻译,所以有必要知道它的值构成原理。
external_attr 值是