代码之家  ›  专栏  ›  技术社区  ›  aelgn

在ZipFile中保留文件属性

  •  5
  • aelgn  · 技术社区  · 15 年前

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

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

    我当前的环境是Windows,我在 ZipInfo.external_attr 方法。

    当然,在写入时必须有一种标准的方法来保存文件属性 ZipFile ?

    1 回复  |  直到 11 年前
        1
  •  3
  •   aelgn    15 年前

    我遇到的问题是大量未记录的zipfile.zipinfo.external\u attr。我找到的这个对象的所有示例都重新引用为*nix文件权限样式。

    我的实现将在Windows上运行。

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

    Windows只读zipinfo.external的幻数是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)
    

    干杯!