Tengo un archivo test.txt
que está dentro de un archivo zip test.zip
. Los permisos en test.txt
están fuera de mi control cuando está comprimido, pero ahora quiero que sean de escritura grupal. Estoy extrayendo el archivo con Python, y no quiero escapar al shell.Establecer permisos en un archivo comprimido en python
EDIT: Esto es lo que tengo hasta ahora:
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()
Esta aplicación funciona perfectamente en OS X usando 2.5.1, pero no funciona en mi cuadro de casa (Debian, Python 2.4 & 2.5) o en RHEL 5 con Python 2.4. En cualquier cosa que no sea OS X, no genera errores, pero tampoco cambia los permisos. ¿Alguna idea de por qué? Además, ¿cómo funciona writestr()
? Sé que lo estoy usando incorrectamente aquí.
¿Hay alguna manera de hacerlo sin os.chmod
(el usuario que extrae el archivo no tiene permisos para usar os.chmod
después de extraerlo)? Tengo acceso de escritura completo al archivo zip.
Más información:
> 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
La extracción usuario no es myuser
, pero es en mygroup
.
La otra cosa que podría hacer es explicar sus problemas en Linux, ya que alguien aquí puede ayudar, pero no ha dado nada para continuar. –
No estoy seguro de lo que quiere decir. Linux se comporta bien, aunque python se comporta de manera diferente en OS X. –
Bueno, dijiste "funciona en OS X, no en Debian". Si dijiste por qué no funciona, tal vez publicó algunos códigos o mensajes de error, alguien podría ayudar. Solo un pensamiento. –