zipfile/Datei schreiben unter Windows: Permission denied
Verfasst: Montag 15. Oktober 2007, 10:30
Hallo,
ich möchte eine .odt-Datei in ein eigens angelegtes temporäres Verzeichnis entpacken. Der Code dafür sieht wie folgt aus und funktioniert unter Linux einwandfrei:
Unter Windows erhalte ich aber die folgende Fehlermeldung:
Bei meinen Nachforschungen bin ich Windowsseitig auf eine Merkwürdigkeit gestoßen: Alle Verzeichnisse und Dateien sind auf einmal angeblich schreibgeschützt, verhalten sich aber überhaupt nicht entsprechend. Wenn ich versuche, den Haken wegzumachen und die Eigenschaften noch einmal öffne, ist er wieder da.
Aber wie gesagt: Ich kann die Verzeichnisse nach belieben bearbeiten. Und auch die Verzeichnisstruktur aus dem zipfile wird vom Programm noch ordnungsgemäß angelegt.
Was ich bislang probiert habe ist, die Pfade zu normalisieren und ihnen per os.chmod bzw. win32file.SetFileAttributes die Schreibberechtigung zu geben.
Was könnte ich noch versuchen?
ich möchte eine .odt-Datei in ein eigens angelegtes temporäres Verzeichnis entpacken. Der Code dafür sieht wie folgt aus und funktioniert unter Linux einwandfrei:
Code: Alles auswählen
def _extract_document(self, sourcepath, targetpath):
"""
Entpackt die Vorlage in das Zielverzeichnis
"""
doc = zipfile.ZipFile(sourcepath, 'r')
# Verzeichnisstruktur erstellen
for n in doc.namelist():
dir = os.path.join(targetpath,os.path.dirname(n))
if not os.path.exists(dir):
os.makedirs(dir)
# Dateien entpacken
for n in doc.namelist():
if not n.endswith(os.sep):
f = open(os.path.normpath(os.path.join(targetpath, n)), "wb")
f.write(doc.read(n))
f.flush()
f.close()
doc.close()
Code: Alles auswählen
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Eufrus\Desktop\Lasso\gui\TicketReminderGUI.py", line 163, in _create_letters
File "C:\Home\Lasso\program\OdtMerger.py", line 114, in create_documents
self._extract_document(vpf, tempdir)
File "C:\Home\Lasso\program\OdtMerger.py", line 54, in _extract_document
f = open(os.path.normpath(os.path.join(targetpath, n)), "wb")
IOError: [Errno 13] Permission denied: 'temp1\\Configurations2\\statusbar'
Aber wie gesagt: Ich kann die Verzeichnisse nach belieben bearbeiten. Und auch die Verzeichnisstruktur aus dem zipfile wird vom Programm noch ordnungsgemäß angelegt.
Was ich bislang probiert habe ist, die Pfade zu normalisieren und ihnen per os.chmod bzw. win32file.SetFileAttributes die Schreibberechtigung zu geben.
Was könnte ich noch versuchen?