У меня есть файл test.txt
, который находится внутри zip-архива test.zip
. Разрешения на test.txt
находятся вне моего контроля, когда он сжат, но теперь я хочу, чтобы они были доступны для групповой записи. Я извлекаю файл с помощью Python и не хочу убегать в оболочку.
EDIT: Вот что у меня есть:
import zipfile
z = zipfile.ZipFile('test.zip', 'w')
zi = zipfile.ZipInfo('test.txt')
zi.external_attr = 0777 << 16L
z.writestr(zi, 'FOO')
z.close()
z = zipfile.ZipFile('test.zip', 'r')
for name in z.namelist():
newFile = open(name, "wb")
newFile.write(z.read(name))
newFile.close()
z.close()
Это отлично работает в OS X с использованием 2.5.1, но не работает на моем домашнем компьютере (Debian, Python 2.4 и 2.5) или на RHEL 5 с Python 2.4. Во всем, кроме OS X, это не приводит к ошибке, но и не меняет разрешения. Есть идеи, почему? Кроме того, как работает writestr()
? Я знаю, что использую его неправильно здесь.
Есть ли способ сделать это без os.chmod
(пользователь, извлекающий файл, не имеет разрешений на использование os.chmod
после его извлечения)? У меня есть полный доступ для записи к zip-файлу.
Больше информации:
> ls -l test.zip
-rwxrwxrwx 1 myuser mygroup 2008-11-11 13:24 test.zip
> unzip test.zip
Archive: test.zip
inflating: test.txt
> ls -l test.txt
-rw-r--r-- 1 myuser mygroup 2008-11-11 13:34 test.txt
Извлечение пользователя не myuser
, а mygroup
.
os.chmod
? звучит странно. - person orip   schedule 14.11.2008