2017-07-28 3 views
0

Ich versuche, ein Programm zu machen, das: Kopieren & Fügen Sie ein Verzeichnis und legen Sie es, und es ist Inhalte in einen neuen Speicherort. Ich glaube nicht, mein Code für das richtig ist, ich denke, es ist einfach nur die Datei in einem völlig anderen OrtFile Transfer w/python

import os 
import shutil 
login = os.getlogin() 

SOURCE_FILE_DEKSTOP = '/Users/%s/Desktop' % (login) 
DST_FILE_WD = 'Users/%s/WorkDocs' % (login) 

shutil.move(SOURCE_FILE_DEKSTOP, DST_FILE_WD) 

ich diesen Fehler auch

Traceback (most recent call last): 
    File "/Users/gomcrai/pythings/fileTransfer.py", line 8, in <module> 
    shutil.move(SOURCE_FILE_DEKSTOP, DST_FILE_WD) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib /python2.7/shutil.py", line 300, in move 
rmtree(src) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 256, in rmtree 
    onerror(os.rmdir, path, sys.exc_info()) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 254, in rmtree 
os.rmdir(path) 
OSError: [Errno 13] Permission denied: '/Users/gomcrai/Desktop' 
+1

Also ... sind Sie berechtigt, diese Datei zu verschieben? – Makoto

+0

Ich bin ein Domain-Admin, und der Account, auf dem ich das mache, ist auf den lokalen Admin eingestellt, also sollte ich die Möglichkeit haben, dies zu tun. OS = Mac, falls jemand etwas wissen sollte –

Antwort

1

Wenn Sie wirklich wollen zu kopieren, anstatt sich zu bewegen, dann ist shutil.copytree eine bessere Wette. move wird nun den Eintrag verschieben und das Original löschen.

Sie erhalten einen Fehler, weil Macs Zugriffssteuerungslisten für die Ordner haben, von denen sie denkt, dass sie immer dort sein sollten. Desktop ist eine davon, da sie alle auf Ihrem Desktop sichtbaren Dateien speichert. Da shutil.move versucht, das zu löschen, wird die ACL erfüllt und abgelehnt.

ls -ale /Users/gomcrai/Desktop sollten Sie die ACL zeigen, wie die Anzeige etwas: 0: group:everyone deny delete

Wenn Sie möchten schneiden und fügen statt Kopie und das Verzeichnis einfügen, können Sie entweder os.listdir oder os.walk und finden Dateien und Ordner innerhalb Desktop/ und verschieben Sie alle, oder verwenden Sie shutil.copytree auf Desktop und entfernen Sie dann alles innerhalb Desktop, während Sie diesen Ordner allein lassen.

+0

Ich möchte definitiv kopieren, da wir infosec Richtlinien haben, wo wir die Informationen über das Originalgerät mindestens 2 Wochen lang aufbewahren müssen. Vielen Dank ! –

+0

Ich möchte auch, dass der Zielordner überschrieben wird, wenn bereits einer vorhanden ist. Ich habe meinen Code angepasst, um einen Ordner innerhalb meines Ziels zu erstellen, aber wenn er bereits existiert, möchte ich ihn nur @Simon Fraser überschreiben –

Verwandte Themen