2017-05-01 3 views
1

Ich versuche, die .txt Dateien aus allen Ordnern oder Unterordnern in einen einzigen Ordner zu verschieben.Wie verschiebt man alle Dateien desselben Typs in einzelne Ordner?

, was ich habe versucht, ist dies:

import shutil 
import os 
for root, dirs, files in os.walk('test'): 
    for file in files: 
     if file.endswith('.txt'): 
      shutil.move(file,'dest')#print (file) 

Ich erhalte die folgende Fehlermeldung:

... 
Traceback (most recent call last): 
    File "C:\Python36\lib\shutil.py", line 538, in move 
    os.rename(src, real_dst) 
FileNotFoundError: [WinError 2] The system cannot find the file specified: 'test - Copy (2).txt' -> 'dest' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "<stdin>", line 4, in <module> 
    File "C:\Python36\lib\shutil.py", line 552, in move 
    copy_function(src, real_dst) 
    File "C:\Python36\lib\shutil.py", line 251, in copy2 
    copyfile(src, dst, follow_symlinks=follow_symlinks) 
    File "C:\Python36\lib\shutil.py", line 114, in copyfile 
    with open(src, 'rb') as fsrc: 
FileNotFoundError: [Errno 2] No such file or directory: 'test - Copy (2).txt' 

Bitte, lassen Sie mich wissen, wie diese zu lösen und erfolgreich bewegen oder schneiden Vergangenheit al meine Dateien aus dem Ordner und den Unterordnern mit der Erweiterung .txt

Antwort

0

Das Problem besteht darin, dass Sie den Dateinamen nur an shutil übergeben des vollständigen Pfades. Sie können os.path.join() um den Basispfad mit Dateinamen zu verbinden verwenden:

import shutil 
import os 

for root, dirs, files in os.walk('test'): 
    for file in files: 
     if file.endswith('.txt'): 
      shutil.move(os.path.join(root, file),'dest') 

Wenn Sie alle Dateien im Zielverzeichnis ersetzen möchten, müssen Sie den vollständigen Pfad der Dateinamen zu übergeben oder entfernen Sie alle Dateien innerhalb des Verzeichnisses.

Auch statt os.walk() als eine mehr pythische Möglichkeit zum Suchen von Dateien mit einem bestimmten Format können Sie glob() Modul verwenden.

+0

Entschuldigung, aber wohin gingen die Dateien? Ich sehe nirgendwo den Ziel-Tidler –

+0

@JafferWilson Ist der 'dest' Name eines Ordners? Ich denke, es sollte bereits existieren, bevor Sie Ihre Dateien verschieben. – Kasramvd

+0

Ja, ich habe das bereits erstellt –

Verwandte Themen