Установить права на сжатый файл в Python
У меня есть файлtest.txt
то есть внутри почтового архиваtest.zip
, Разрешения наtest.txt
находятся вне моего контроля, когда они сжаты, но теперь я хочу, чтобы они были доступны для записи в группе. Я извлекаю файл с помощью Python и не хочу выходить в оболочку.
РЕДАКТИРОВАТЬ: Вот что у меня так далеко:
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
.