/ / Запазване на файловите атрибути в ZipFile - python, file, zip, zipfile

Запазва файлови атрибути в ZipFile - питън, файл, zip, zipfile

Търся начин да запазя файловите атрибути (напр. Само за четене) на файл, който се записва на zipfile.ZipFile инстанция.

Файловете, които добавям към архива на zip, възстановяват техните атрибути на файловете, напр. флагът само за четене е изчезнал, когато инспектира архива с zip приложения и след разархивирайте.

Сегашната ми среда е Windows и имам проблеми с ZipInfo.external_attr метод.

Със сигурност трябва да има стандартен начин за запазване на файловите атрибути при писане ZipFile?

Отговори:

3 за отговор № 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()

Ако трябва да намерите правилната стойност за друг тип атрибут, създайте zipfile така, както го искате с някои приложения за 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)

Наздраве!