115122
Goto Top

Errno 13 Permission denied beim Ordner kopieren

Hallo,

ich wollte mir ein kleines Skript basteln, welches mir (wer hätte es gedacht) das leben erleichtert. Dabei soll im ersten Schritt ein Quellordner kopiert werden, wobei ich aber hier schon scheitere. Folgend mein Code bisher:

#coding: utf-8

import os
import shutil

path = "C:\\Users\\***\\Desktop\\Copy\\KopiereDiesenOrdner"  
dest = "C:\\Users\\***\\Desktop\\Zielordner"  

if os.path.exists(path):
    try:
        shutil.copy(path, dest)
    except:
        raise

Heraus bekomme ich folgendes:

PermissionError: [Errno 13] Permission denied: 'C:\\Users\\***\\Desktop\\Copy\\KopiereDiesenOrdner'

Verstehe ich irgendwie nicht. Das Skript führe ich (als Administrator angemeldet) aus. Ich kann auch problemlos Ordner und Dateien auf dem Desktop schreiben und speichern etc. Muss ich meinem Skript extra Rechte zuweisen für diese Operationen ?

Grüße,
lordzwieback

Content-Key: 301656

Url: https://administrator.de/contentid/301656

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: Winary
Winary 13.04.2016 um 08:28:46 Uhr
Goto Top
Hallo,

hast du es auch als angemeldeter User (***) probiert? Standardmäßig hat der Administrator keine Rechte innerhalb von Benutzerprofilen. Er kann sie sich aber nehmen bei Bedarf.

Grüße Winary
Mitglied: 115122
115122 13.04.2016 um 08:30:38 Uhr
Goto Top
Jap, ich meinte eingentlich damit, dass mein Benutzerkonto Adminrechte hat, sorry.
Mitglied: Winary
Winary 13.04.2016 um 08:34:41 Uhr
Goto Top
Schau mal ob du wirklich alle erforderlichen Rechte hast:

Eigenschaften von KopiereDiesenOrdner -> Sicherheit -> Erweitert -> Effektiver Zugriff -> Dein Benutzernamen auswählen

Wird der Zielordner erstellt und es wird nur nichts kopiert oder kommt das Skript gar nicht so weit?
Mitglied: 115122
115122 13.04.2016 aktualisiert um 08:42:28 Uhr
Goto Top
Beim effektiven Zugriff habe ich mich gestern schon als Besitzer eingetragen. Eben nochmal nachgeschaut, hat sich nichts geändert. ^^

Er bricht beim Befehl shutil.copy ab und per "raise" gibt er mir die Fehlermeldung aus, den neuen Ordner erstellt das Skript nicht.

Habe es gestern sowie heute morgen auf Arbeit getestet (Windows), da gibt er mir den Fehler aus. Gleicher Code bei meinem MacBook, funktioniert wunderbar. Falls das weiterhilft. (Python3)
Mitglied: Winary
Lösung Winary 13.04.2016 um 09:12:01 Uhr
Goto Top
Und wenn du ein anderes Verzeichnis nimmst z.B. C:\Temp\KopiereDiesenOrdner ?

Versuch es mal mit shutil.copytree
Mitglied: 115122
115122 13.04.2016 aktualisiert um 09:19:40 Uhr
Goto Top
Mit dem Befehl copytree kommt das Skript anscheinend schon einen Schritt weiter. Er meckert jetzt nicht mehr am Quellpfad, sondern am Zielpfad herum:

FileExistsError: [WinError 183] Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist: 'C:\\temp\\Zielordner'

Kommt mir irgendwie auch komisch vor. Er soll den Ordner ja nicht neu erstellen, sondern in den Zielordner reinkopieren. Wahrscheinlich ist die Antwort wieder zu offensichtlich für mich..

Während des copytree wird wohl ein mkdir ausgeführt, warum auch immer.
Mitglied: Winary
Winary 13.04.2016 um 09:21:38 Uhr
Goto Top
So genau kenne ich mich damit auch nicht aus. Schau mal hier in den vorletzten Beitrag ob dir die Syntax besser mundet.

https://www.daniweb.com/programming/software-development/threads/294217/ ...
Mitglied: 115122
115122 13.04.2016 um 09:29:50 Uhr
Goto Top
Dein Link war hilfreich, aber ich habe es jetzt anders gelöst.

Da er meckert, dass er den Zielpfad findet (bereits vorhanden) habe ich den Zielordner einfach gelöscht. Später habe ich sowieso vor, dem Zielordner das aktuelle Datum und Uhrzeit mitzugeben, heißt, der Ordner kann vorher nicht existieren. Von daher würde ich das Problem jetzt einfach mal als gelöst ansehen und dir vielmals danken.