2017-02-27 3 views
-1

Ich muss mehrere. Mp4 und. CR2-Dateien aus etwa einem Dutzend Unterordner kopieren. Ich habe mehrere Varianten des Codes ausprobiert und möchte von Anfang an beginnen.Wie kann ich viele Dateien eines bestimmten Typs aus vielen Unterordnern mit Python kopieren?

import os 
import shutil 
#os.chdir('C:\\') 

dir_src = 'D:\\Users\\Tibi\\Pictures' 
dir_dst = 'D:\\test' 

#while True: 
# try: 
#  for folder in os.walk(dir_src): 
#   print(folder) 
#   for filename in os.listdir(dir_src): 
#    if filename.endswith('.CR2'): 
#     shutil.copy(dir_src + '\\' + filename, dir_dst) 
#    print(filename) 
# except UnicodeEncodeError: 
#  print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>File %s was Skipped!<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" %filename) 
import pathlib 
import glob 

dir_src = pathlib.Path('D:\\Users\\Tibi\\Pictures\\Move') 
dir_dst = pathlib.Path('D:\test') 

for file in dir_src.rglob('*.CR2'): 
    shutil.copy(dir_src + '\\' + file, dir_dst) 
    print("Current File is: %s" % file) 

Ich habe den Code ausprobiert, der ohne den Code darunter auskommentiert wurde.

+0

Zeigen Sie uns die Variationen, die Sie ausprobiert haben. Was meinst du von Anfang an? Je mehr Informationen Sie uns geben können, desto besser. Wie sieht die Verzeichnisstruktur aus? – The4thIceman

Antwort

1

sollten dies tun, was Sie wollen, aber es ist davon ausgehen, dass keine Dateien den gleichen Namen haben:

import os 
import shutil 

source_dir = r"/Users/ThatOtherBatman/Foo/" 
target_dir = r"/Users/ThatOtherBatman/Bar/" 
extensions = (".mp4", ".cr2") 

for directory, _, file_names in os.walk(source_dir): 
    for file_name in file_names: 
     if file_name.lower().endswith(extensions): 
      source_path = os.path.join(directory, file_name) 
      target_path = os.path.join(target_dir, file_name) 
      print("Moving {} to {}".format(file_name, target_dir)) 
      shutil.copy(source_path, target_dir) 

os.walk ist, was Sie rekursiv durch ein Verzeichnis suchen verwenden möchten. Überprüfen Sie dann, ob die Dateierweiterung in den gewünschten Erweiterungen enthalten ist, und kopieren Sie die Datei, falls dies der Fall ist.

+0

Ich habe die Quelle und das Ziel geändert und es hat nicht funktioniert. Es hat für eine Sekunde angehalten und ohne Ausgabe oder irgendwelche Änderungen im Zielordner beendet. –

+1

Wirklich? Kannst du es nochmal mit der 'print' Anweisung versuchen? – Batman

+0

Ich fügte 3 verschiedene Druckzeilen ("Hello", "Hello World", und Hello World2 ") in jeden Teil der Schleife (unmittelbar nach beiden for-Schleifen und nach der if-Anweisung) hinzu und fügte die print-Anweisung in Ihre Zeile ein . Code der Ausgang war:.. Hallo Hallo Welt Hallo Hallo –

Verwandte Themen