Based On, Şu anda ile çalışıyorum kod here.Python Taşı Dosyalar kredi vermek için adı
ben yinelemeli kaynak klasördeki tüm dosyaları çekmeye çalışan ve bunları taşımak am, CJI bu yanıttan olduğunu dosya adlarından klasörler ilk beş karakter 0:5
içine Aşağıda
Benim Kod: Şimdi
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)
, srcfiles = os.listdir(srcpath)
vedeğişen'un altındaki kodla birlikte, bir değişkendeki yolları ve dosya adlarının ilk beş karakterini diğerinde alır.
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])))
nasıl ... Bu kullanmayı orijinal kodu değiştirmeyle ilgili gider Veya eğer birisi bunu hakkında gitmek nasıl daha iyi bir fikri vardır. Teşekkürler.
Teşekkür! 'os.path.mkdir (subFolder):' benim için çalışmadı. Yolu kaldırmak zorundaydım. Kullanımı: 'os.makedirs (subFolder)' – sdavis891
Bunun için üzgünüm, cevabımı düzenledim. 'Mkdir' ve' makedir'' işlevleri 'os.path' alt modülü değil, 'os' modülündedir. Alt klasörler birden fazla seviyede yuvalanmadıkça 'mkdir' çalışmalıdır. – tjohnson
Gelecekte alt klasörlerle detaylandırmak istediğimde, kolay bir kişiselleştirme mi? Yani 045679.jpg adlı bir dosyam olduğunu söyle, 0 Klasör> 045 Klasör> 04567 Klasöre veya bir şeye atılmasını istiyorum. – sdavis891