Berechtigungen für eine komprimierte Datei in python @ setz
Ich habe eine Dateitest.txt
das ist in einem zip-Archivtest.zip
. Die Berechtigungen auftest.txt
sind außerhalb meiner Kontrolle, wenn es komprimiert ist, aber jetzt möchte ich, dass sie gruppenbeschreibbar sind. Ich extrahiere die Datei mit Python und möchte nicht in die Shell entkommen.
BEARBEITEN Hier ist, was ich bisher habe:
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()
Dies funktioniert perfekt unter OS X mit 2.5.1, aber nicht auf meiner Home-Box (Debian, Python 2.4 & 2.5) oder auf RHEL 5 mit Python 2.4. Unter allen anderen Betriebssystemen als OS X tritt kein Fehler auf, die Berechtigungen werden jedoch auch nicht geändert. Irgendwelche Ideen warum? Auch wie funktioniertwritestr()
Arbeit? Ich weiß, dass ich es hier falsch benutze.
Gibt es eine Möglichkeit, dies ohne @ zu tuos.chmod
(Der Benutzer, der die Datei extrahiert, hat keine Berechtigung, @ zu verwendeos.chmod
nachdem es extrahiert wurde)? Ich habe vollständigen Schreibzugriff auf die ZIP-Datei.
Mehr Info
> 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
Der Benutzer, der extrahiert, ist nichtmyuser
, ist aber inmygroup
.