Merhaba,
2021-01-09_07-57-00_UTC.jpg
2021-01-11_14-30-07_UTC.mp4 Bu formatta oluşan dosyaları her birinin tarihine uygun klasöre yerleştirmek istiyorum.
Klasördeki dosya isimlerinden tarihleri çekip yeni tarih klasörleri oluşturdum. Ama örneğin 2021-01-09_07-57-00_UTC.jpg dosyasının nasıl 2021-01-09 klasörüne taşınacağını yapamadım. Yardımcı olabilir misiniz? Aşağıda kodları bırakıyorum.
import os
import shutil
def make_directory():
date = []
for i in files:
a= i.split('_')[0]
date.append(a)
new = []
new = list(set(date)) #tekrar eden değerleri kaldırdık
for i in new :
fileName = i.startswith('2021')
if fileName == True :
dirName = (directory_path + '/' + i)
if i not in os.listdir(directory_path):
os.mkdir(dirName)
if __name__ == '__main__':
directory_path = os.getcwd()
files = os.listdir(directory_path)
make_directory()
1 Beğeni
Merhaba, elinize sağlık ilk aşamayı yapmışsınız; sorduğunuz kısım için belki şunun yardımı olur
# halihazırda içinde bulunduğumuz dizini geziyoruz..
for file_name in os.listdir():
# eğer `file_name` bir klasöre değil de dosyaya tekabül ediyorsa..
if klasor_degil_de_dosya_mi(file_name):
# Yıl-Ay-Gün kısmını elde edelim (sizin koddan yürüttüm burayı)..
tarih = file_name.split("_")[0]
# şimdi ilgili klasöre taşıyalım..
shutil.bunu_suraya_tasi(bu, sura)
1 Beğeni
Cevabınız için teşekkür ederim
Yapmak istediğim aşamaları yaptım bitmiş halini paylaşıyorum. Böyle bir şeye ihtiyacı olanlar için yol gösterici olabilir. Daha da iyileştirilebilir tabi ki. Enumerate ve set özelliğini öğrenmiş oldum 
import os
import shutil
def organize():
directory_path = os.getcwd()
files = os.listdir(directory_path)
date = []
for i in files:
a= i.split('_')[0]
date.append(a)
dirPaths = list() #Klasörlerin pathleri tutuluyor
new = list(set(date)) #tekrar eden değerleri kaldırdık
for i in new :
fileName = i.startswith('2021')
if fileName == True :
dirName = (directory_path + '/' + i)
if i not in os.listdir(directory_path): #Eğer dizinde o klasör yoksa oluşturur
os.mkdir(dirName)
dirPaths.append(dirName)
#dosya isimlerini aldık
fileNames = [] #Dosya isimlerini tutuyor
for i in files:
a= i.split('_')[0]
a = a.startswith('2021')
b = os.path.isfile(directory_path + '\\' + i)
if a == True and b == True:
fileNames.append(i)
file_paths = [] #Dosya pathleri tutuyor
for i in files:
if i.startswith("2021") and i.endswith('.jpg'):
a= os.path.join(directory_path, i)
file_paths.append(a)
if i.startswith("2021") and i.endswith('.mp4'):
b= os.path.join(directory_path, i)
file_paths.append(b)
bare = []
extensions =('.jpg','.mp4')
for j in file_paths:
if j.endswith(extensions):
j =j.split("\\")[6] #C:\Users\userName\folderName\folderName2\folderName3 eğer klasör sayısı az ise 6 yerine 5,4 filan verilebilir
j =j.split("_")[0]
bare.append(j)
try:
for sıra, eleman in enumerate(bare, 0):
if eleman == eleman:
index = "{}".format(sıra)
index = int(index)
dest = directory_path + "\\{}".format(eleman) + "\\" + fileNames[sıra]
src = file_paths[index]
shutil.move(src, dest)
except:
pass
if __name__ == "__main__":
organize()
1 Beğeni