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?