Kredit zu geben, der Code, den ich zur Zeit mit arbeite ist von dieser Antwort von cji, here.Python Dateien verschieben Basierend auf dem Namen
Ich versuche, rekursiv alle Dateien aus dem Quellordner zu ziehen und sie bewegen ersten fünf Zeichen 0:5
Mein Code unten in Ordnern aus den Dateinamen:
import os
import shutil
srcpath = "SOURCE"
srcfiles = os.listdir(srcpath)
destpath = "DESTINATION"
# extract the three letters from filenames and filter out duplicates
destdirs = list(set([filename[0:5] for filename in srcfiles]))
def create(dirname, destpath):
full_path = os.path.join(destpath, dirname)
os.mkdir(full_path)
return full_path
def move(filename, dirpath):
shutil.move(os.path.join(srcpath, filename)
,dirpath)
# create destination directories and store their names along with full paths
targets = [(folder, create(folder, destpath)) for folder in destdirs]
for dirname, full_path in targets:
for filename in srcfiles:
if dirname == filename[0:5]:
move(filename, full_path)
Nun ändert srcfiles = os.listdir(srcpath)
und destdirs = list(set([filename[0:5] for filename in srcfiles]))
mit dem Code unter bekomme ich die Pfade in einer Variablen und die ersten fünf Zeichen der Dateinamen in einem anderen.
srcfiles = []
destdirs = []
for root, subFolders, files in os.walk(srcpath):
for file in files:
srcfiles.append(os.path.join(root,file))
for name in files:
destdirs.append(list(set([name[0:5] for file in srcfiles])))
Wie würde ich mich über den ursprünglichen Code zu modifizieren, diese zu verwenden ... Oder wenn jemand eine bessere Idee, wie ich über das tun dies gehen würde. Vielen Dank.
Vielen Dank für die Antwort! 'os.path.mkdir (subFolder):' funktionierte nicht für mich. Ich musste den Pfad entfernen. Mit: 'os.makedirs (subFolder)' – sdavis891
Sorry, ich habe meine Antwort bearbeitet. Die 'mkdir'- und' makedirs'-Funktionen befinden sich im 'os'-Modul, nicht im' os.path'-Submodul. 'mkdir' sollte funktionieren, außer die Unterordner sind mehr als eine Ebene verschachtelt. – tjohnson
wenn ich, sagen wir in der Zukunft, mit den Unterordnern arbeiten wollte ... wäre das eine einfache Anpassung? Sagen wir, ich hätte eine Datei namens 045679.jpg, ich möchte, dass sie in einen 0 Ordner> 045 Ordner> 04567 Ordner oder so ähnlich ablegt. – sdavis891