2017-01-07 3 views
0

Ich möchte ein paar Bilder aus auf Verzeichnis in ein anderes Verzeichnis kopieren, und hier ist mein Code:Umgang mit OSError: [Errno 20] Kein Verzeichnis: '.DS_Store'?

Aber wenn ich es laufen, mir das Terminal erzählt, dass OSError: [Errno 20] Not a directory: '.DS_Store' Ich weiß ‚DS_dstore‘ ist eine versteckte Datei im Mac, aber wie kann ich diesen Fehler beheben?

+0

Sie bitte Ihre Einzug fixieren. –

Antwort

0

Ihre Logik scheint stark gebrochen. Sie durchlaufen alle Dateien im Verzeichnis und übergeben sie an copyFile. Aber innerhalb diese Funktion, versuchen Sie erneut, durch jede Datei im "Verzeichnis" zu durchlaufen, die an die Funktion übergeben: außer dass Sie nicht nur Verzeichnisse an die Funktion übergeben, übergeben Sie jede Datei im ursprünglichen Verzeichnis gefunden.

Es ist nicht klar, was Sie versuchen zu tun, aber ich denke, Sie müssen einen dieser Anrufe zu listdir und die zugehörige Schleife entfernen.

+0

Ich habe viele Ordner im Verzeichnis '/ Users/liuchong/Desktop/LFW/lfw', und ich möchte Dateien in diesen Ordnern in ein Verzeichnis verschieben. –

0

Wenn Sie os.listdir('/Users/liuchong/Desktop/LFW/lfw') tun, gibt es sowohl Verzeichnisse und Dateien zurück. Sie müssen den Eintrag für das Verzeichnis überprüfen, bevor Sie es als Argument übergeben.

def copyFile(sourceDir,targetDir): 
    for files in os.listdir(sourceDir): 
     sourceFile=os.path.join(sourceDir,files) 
     if os.path.isfile(sourceFile) and sourceFile.find('.jpg')>0: 
      shutil.copy(sourceFile,targetDir) 

for i in os.listdir('/Users/liuchong/Desktop/LFW/lfw'): 
    if os.path.isdir(i): 
     i = os.path.join('/Users/liuchong/Desktop/LFW/lfw', i) 
     copyFile(i,'/Users/liuchong/Desktop/LFW/lfw') 
+0

Danke, ich füge diese Zeile 'if os.path.isdir (i)' hinzu, aber der Code läuft nicht. Dann drucke ich den Typ von 'i', der Ausgang ist 'str' .... –

+0

Sie müssen 'i = os.path.join ('/ Users/liuchong/Desktop/LFW/lfw', i)' hinzufügen bevor Sie das Verzeichnis an die Funktion übergeben. – franklinsijo

0
os.listdir('/Users/liuchong/Desktop/LFW/lfw') 

gibt eine Liste, die die Namen der Einträge im Verzeichnis enthält, die vom Benutzer angegeben wird. Liste basiert auf zufälligen Auswahlen.

dieses Problem zu beheben (ich weiß, dass ich zu spät bin) ist hier ein python 3 kompatiblen Code: -

import time 
import os 
from shutil import copyfile 

def Copyfile(in_path, out_path, quantity = None): 

    filelist = os.listdir(in_path) 
    counter = 0 
    print("Copying to %r directory. Please wait... " % out_path) 

    start = time.time() 

    for i in range(quantity): 
     copyfile(filelist[i], out_path+filelist[i]) 
     counter+=1 
     sys.stdout.write("\rTotal images copied : %r" % counter) 
     sys.stdout.flush() 

    end = time.time() 
    print("This move operation took %r seconds to run." %(end - start)) 
Verwandte Themen