Как я устанавливаю полномочия (атрибуты) на файле в zip-файле с помощью zipfile модуля Python?

Есть так много ответов для PHP и MySQL, но вот код для PHP и Oracle для предотвращения SQL-инъекций, а также регулярное использование драйверов oci8:

$conn = oci_connect($username, $password, $connection_string);
$stmt = oci_parse($conn, 'UPDATE table SET field = :xx WHERE ID = 123');
oci_bind_by_name($stmt, ':xx', $fieldval);
oci_execute($stmt);
43
задан Martin Prikryl 30 April 2014 в 11:35
поделиться

3 ответа

Это, кажется, работает (благодарит Evan, помещая его здесь, таким образом, строка находится в контексте):

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 = 0777 << 16L # give full access to included file
zip.writestr(info, bytes)
zip.close()

я все еще хотел бы видеть что-то, что это документирует это... Дополнительный ресурс, который я нашел, был примечанием по формату zip-файла: http://www.pkware.com/documents/casestudies/APPNOTE.TXT

42
ответ дан Tom 26 November 2019 в 22:48
поделиться

Посмотрите на это: полномочия Набора на сжатом файле в python

я не совсем уверен, является ли это тем, что Вы хотите, но это, кажется.

ключевая строка, кажется:

zi.external_attr = 0777 << 16L

похоже, что это устанавливает полномочия на 0777 там.

13
ответ дан Community 26 November 2019 в 22:48
поделиться

Когда Вы делаете это как это, это работает хорошо?

zf = zipfile.ZipFile("something.zip")
for name in zf.namelist():
    f = open(name, 'wb')
    f.write(self.read(name))
    f.close()

В противном случае я предложил бы добавить os.chmod в для цикла с 0777 полномочиями как это:

zf = zipfile.ZipFile("something.zip")
for name in zf.namelist():
    f = open(name, 'wb')
    f.write(self.read(name))
    f.close()
    os.chmod(name, 0777)
0
ответ дан Evan Fosmark 26 November 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: