2016-12-10 5 views
1

Ich habe versucht, mein erstes Python-Programm zu machen, die alle Dateien aus einem Ordner kopiert und in einer anderen einfügen:IOError mit shutil.copyfile() unter Windows

import shutil 
shutil.copyfile("C:\Users\USER\Desktop\MoveFrom\Test.txt", 
       "C:\Users\USER\Desktop\MoveTo") 

Aber ich immer eine Fehlermeldung bekommen und nicht herausfinden können, warum:

Traceback (most recent call last): 
    File "C:\Users\USER\Desktop\Python\movefiles.py", line 2, in <module> 
    shutil.copyfile("C:\Users\USER\Desktop\MoveFrom\Test.txt", "C:\Users\USER\Desktop\MoveTo") 
    File "C:\PYTHON27\lib\shutil.py", line 83, in copyfile 
    with open(dst, 'wb') as fdst: 
IOError: [Errno 13] Permission denied: 'C:\\Users\\USER\\Desktop\\MoveTo' 

Antwort

2

Mit shutil.copyfile(), müssen Sie den vollständigen Zielpfad geben, (einschließlich dem neuen Dateinamen), nicht nur das Zielverzeichnis, wie Sie mit dem Befehl copy tun könnten.

Beachten Sie auch, dass Backslashes in den meisten Sprachen speziell innerhalb von Stringliteralen von der Sprache interpretiert werden. Die Pfade, die du benutzt hast, waren also komplett ungültig. Sie müssen entweder escape die Backslashes (durch Hinzufügen eines weiteren Backslash vor jedem) in Ihren Pfaden, oder verwenden Sie die r Präfix, die Python nicht speziell Backslashes zu interpretieren.

import shutil 
shutil.copyfile(
    r"C:\Users\USER\Desktop\MoveFrom\Test.txt", 
    r"C:\Users\USER\Desktop\MoveTo\Test.txt") 
+0

Dank @martineau - Touchscreens saugen manchmal. –

0

Sie benötigen copy() statt copyfile() finden https://docs.python.org/2/library/shutil.html.

Kopieren Sie den Inhalt (keine Metadaten) der Datei src in eine Datei namens dst. dst muss der vollständige Zieldateiname sein; Sehen Sie sich shutil.copy() für eine Kopie an, die einen Zielverzeichnispfad akzeptiert.