ZipFile Modul: Umask beim entpacken wird ignoriert.
Verfasst: Dienstag 20. Dezember 2016, 03:19
Hi all,
ich bin heute über ein seltsames Problem gestoßen und ich denke es hat nicht wirklich was mit Python zu tun, sondern eher über das ZIP Format, speziell die ZipInfo.extra bits.
Also erst mal das Problem schildern:
In Python:
In Konsole:
Komisch: Beim entpacken der Datei, die quasi im Speicher erstellt wurde über ZipFile.writestr() wird die Umask meines Users einfach ignoriert.
Das passiert allerdings wirklich nur bei ZIP Dateien, die ich über Python / ZipFile erstelle, NICHT wenn ich 7-zip nutze oder externe tools.
Und meine Umask funktioniert für normale Fälle:
Wenn ich ein ZIP file von 7-zip entpacke in der exakt gleichen Shellumgebung, dann haben alle entpackten Dateien die "korrekten" file permissions.
Siehe hier:
Also entweder liegts am ZipFile Modul von Python oder evtl. an den ZipInfo.extra bits.
Hat jemand einschlägige Erfahrung mit ZIP Dateien in Python und kann evtl. was intelligentes dazu sagen?
Danke für wertvolle Beiträge im Voraus.
ich bin heute über ein seltsames Problem gestoßen und ich denke es hat nicht wirklich was mit Python zu tun, sondern eher über das ZIP Format, speziell die ZipInfo.extra bits.
Also erst mal das Problem schildern:
In Python:
Code: Alles auswählen
import time
import zipfile
data = 'Hello World'
date_time = tuple(time.localtime(time.time()))
zinfo = zipfile.ZipInfo('README.TXT', date_time[:6])
zfile = zipfile.ZipFile('myarchive.zip', 'w', zipfile.ZIP_DEFLATED, allowZip64=True)
zfile.writestr(zinfo, data)
zfile.close()
Code: Alles auswählen
dever@devbo:~/tmp$ unzip -l myarchive.zip
Archive: myarchive.zip
Length Date Time Name
--------- ---------- ----- ----
11 2016-12-20 02:55 README.TXT
--------- -------
11 1 file
dever@devbo:~/tmp$ unzip myarchive.zip
Archive: myarchive.zip
extracting: README.TXT
dever@devbo:~/tmp$ ls -l
total 0
-rw-rw-rw- 1 dever dever 129 Dec 20 03:01 myarchive.zip
---------- 1 dever dever 11 Dec 20 02:55 README.TXT
Das passiert allerdings wirklich nur bei ZIP Dateien, die ich über Python / ZipFile erstelle, NICHT wenn ich 7-zip nutze oder externe tools.
Und meine Umask funktioniert für normale Fälle:
Code: Alles auswählen
dever@devbo:~/tmp$ umask
0000
dever@devbo:~/tmp$ touch Datei
dever@devbo:~/tmp$ ls -l
total 0
-rw-rw-rw- 1 dever dever 0 Dec 20 03:12 Datei
-rw-rw-rw- 1 dever dever 129 Dec 20 03:01 myarchive.zip
---------- 1 dever dever 11 Dec 20 02:55 README.TXT
Siehe hier:
Code: Alles auswählen
dever@devbo:~/tmp$ unzip -l primenumbers.zip
Archive: primenumbers.zip
Length Date Time Name
--------- ---------- ----- ----
72992 2014-06-18 19:52 primenumbers.txt
--------- -------
72992 1 file
dever@devbo:~/tmp$ unzip primenumbers.zip
Archive: primenumbers.zip
inflating: primenumbers.txt
dever@devbo:~/tmp$ ls -l
total 100
-rw-rw-rw- 1 dever dever 0 Dec 20 03:12 Datei
-rw-rw-rw- 1 dever dever 129 Dec 20 03:01 myarchive.zip
-rw-rw-rw- 1 dever dever 72992 Jun 18 2014 primenumbers.txt
-rw-rw-rw- 1 dever dever 18949 Dec 20 03:17 primenumbers.zip
---------- 1 dever dever 11 Dec 20 02:55 README.TXT
Hat jemand einschlägige Erfahrung mit ZIP Dateien in Python und kann evtl. was intelligentes dazu sagen?
Danke für wertvolle Beiträge im Voraus.