У меня была проблема с недокументированным zipfile.ZipInfo.external_attr.Все примеры, которые я нашел для этого объекта, относились к стилю разрешения * nix-файла.
Моя реализация будет работать на 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()
Если вам нужно найти правильное значение для другоготип атрибута создайте zip-файл, как вы хотите, с помощью некоторого приложения для Windows 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)
Cheers!