Python’da İç İçe Klasör Oluşturma (Folders and Subfolders)

Bu makalemizde  python’da iç içe klasör oluşturma(subfolder and folders) konusundan bahsediyor olacağım. Bilgisayarda çoğu zaman kullandığımız ama  arka tarafında nasıl bir işlem olduğunu bilmediğimiz  klasörleme ve alt klasörlerme yapısını;  yıl, ay ve günlerin birbiri içinde sıralandığı bir klasörleme yapısnı oluşturacağız. import os from datetime import datetime simdikiTarih=datetime.now() #print(simdikiTarih) yol="D:\\Evraklarim" yilKlasoru=f"{yol}\\{simdikiTarih.year}" ayKlasoru=f"{yilKlasoru}\\{simdikiTarih.month}" gunKlasoru=f"{ayKlasoru}\\{simdikiTarih.day}" klasorler=[yilKlasoru,ayKlasoru,gunKlasoru] for klasor in klasorler: if not os.path.exists(klasor): os.mkdir(klasor)   Bu kod, şu anki yıl, ay ve günü kullanarak, belirtilen yol altında yıl, ay ve gün klasörlerini oluşturur. f karakteri, süslü parantez içindeki ifadeleri işlemek için kullanılır. Kodu çalıştırdıktan sonra, D Diskinin  altında yıl, ay ve gün klasörlerinin oluşturulduğunu göreceksiniz. Eğer farklı bir tarih için klasörler oluşturmak isterseniz, now değişkenini değiştirerek yapabilirsiniz. şimdi ise sadece 2022 ve 2023 yılları arasında olan tüm ayları içerisindeki günleri de yazarak bir klasörleme yapısını oluşturalım burada dikkat etmenizi çekeceğim konu, ocak 31 gün,  şubat ayının 28 gün olması gibi durumları da göz […]

Python’da İç İçe Klasör Oluşturma (Folders and Subfolders)

Bu makalemizde  python’da iç içe klasör oluşturma(subfolder and folders) konusundan bahsediyor olacağım.

Bilgisayarda çoğu zaman kullandığımız ama  arka tarafında nasıl bir işlem olduğunu bilmediğimiz  klasörleme ve alt klasörlerme yapısını;  yıl, ay ve günlerin birbiri içinde sıralandığı bir klasörleme yapısnı oluşturacağız.

import os 
from datetime import datetime

simdikiTarih=datetime.now()
#print(simdikiTarih)
yol="D:\\Evraklarim"
yilKlasoru=f"{yol}\\{simdikiTarih.year}"
ayKlasoru=f"{yilKlasoru}\\{simdikiTarih.month}"
gunKlasoru=f"{ayKlasoru}\\{simdikiTarih.day}"
klasorler=[yilKlasoru,ayKlasoru,gunKlasoru]
for klasor in klasorler:
    if not os.path.exists(klasor):
        os.mkdir(klasor)

 

Bu kod, şu anki yıl, ay ve günü kullanarak, belirtilen yol altında yıl, ay ve gün klasörlerini oluşturur. f karakteri, süslü parantez içindeki ifadeleri işlemek için kullanılır. Kodu çalıştırdıktan sonra, D Diskinin  altında yıl, ay ve gün klasörlerinin oluşturulduğunu göreceksiniz. Eğer farklı bir tarih için klasörler oluşturmak isterseniz, now değişkenini değiştirerek yapabilirsiniz.

şimdi ise sadece 2022 ve 2023 yılları arasında olan tüm ayları içerisindeki günleri de yazarak bir klasörleme yapısını oluşturalım burada dikkat etmenizi çekeceğim konu, ocak 31 gün,  şubat ayının 28 gün olması gibi durumları da göz ardı etmemektir.

import os

# Klasörlerin yolu ve adlarını belirleyin
baseKlasor = r'D:\Evraklarim'
Klasorler = [baseKlasor]

# Yıl klasörlerini oluşturun
for yil in range(2023, 2024):
    yilKlasoru = f'{baseKlasor}\\{yil}'
    Klasorler.append(yilKlasoru)

    # Ay klasörlerini oluşturun
    for ay in range(1, 13):
        ayKlasoru = f'{yilKlasoru}\\{ay:02d}'
        Klasorler.append(ayKlasoru)

        # Gün klasörlerini oluşturun
        ayinGunleri = 31 if ay in [1, 3, 5, 7, 8, 10, 12] else 30 if ay != 2 else 28
        for gun in range(1, ayinGunleri+1):
            try:
                gunKlasoru = f'{ayKlasoru}\\{gun:02d}'
                Klasorler.append(gunKlasoru)
                os.makedirs(gunKlasoru)
            except:
                pass

 

Bu kodda, ayın gün sayısını belirlemek için bir ayinGunleri değişkeni kullanılır. ayinGunleri değişkeni, if-elif-else koşullu ifadeleriyle, ayın gün sayısını hesaplar. Şubat ayı için, gün sayısı 28 olarak belirlenir. Bu sayede, Şubat ayı için sadece 28 günün klasörü oluşturulur.

Bu kodu çalıştırdıktan sonra, D sürücüsü altında Evraklarim klasörü oluşacak, bu klasör altında 2023 yılı klasörü, bu klasör altında 12 ay klasörü ve her ay klasörü altında o ayın gerçek gün sayısı kadar gün klasörleri oluşacaktır.

Burada kodumuzda önce yıl, ay ve sonra gün klasörlerini oluşturduk burada ayinGunleri = 31 if ay in [1, 3, 5, 7, 8, 10, 12] else 30 if ay != 2 else 28 kullandığımız bu kod yapısı çok güzel ve ileri bir yapıdadır. Ay’ın günlerini yazarken ocak,mart gibi ayların sırası gelince 31 gün, eğer 2.ay olursa yani şubat, ayinGunleri=28 atar. eğer bunların dışında ise ayinGunleri’ne =30 atar.

Burada bu ifadeden bahsetmekte fayda var {ay:02d} ifadesinde, ay değişkeninin değeri, 2 basamaklı bir sayı olarak biçimlendirilir. :02d bölümü, biçimlendirme özelliğidir. Burada, : işaretinden sonra 02 sayısı, sayının en az kaç basamaklı olacağını belirtir. Eğer sayı 2 basamaklı değilse, soluna sıfır ekleyerek 2 basamaklı hale getirilir. d harfi ise sayısal bir ifade olduğunu belirtir. Örneğin, 3 sayısı, {ay:02d} ifadesine göre 03 şeklinde biçimlendirilir. Bu ifadeyi kullanarak, örneğin 1 ayı 01, 9 ayını 09 şeklinde biçimlendirebiliriz.

yukarıdaki kodumuzu monthrange() hazır fonksiyonunu kullanarak da şu şekilde  yazabiliriz:

import os
import calendar


base_folder = r'D:\Evraklarim'
folders = [base_folder]

for yil in range(2023, 2024):
    yilKlasoru = f'{base_folder}\\{yil}'
    folders.append(yilKlasoru)

    for ay in range(1, 13):
        ayKlasoru = f'{yilKlasoru}\\{ay:02d}'
        folders.append(ayKlasoru)

        gunler = calendar.monthrange(yil, ay)[1]
        for gun in range(1, gunler+1):
            gunKlasoru = f'{ayKlasoru}\\{gun:02d}'
            folders.append(gunKlasoru)
            os.makedirs(gunKlasoru)

 

calendar.monthrange(yil, ay) ifadesi, calendar modülü altındaki monthrange() fonksiyonunu kullanarak, belirtilen yil ve ay için bir tuple döndürür. Bu tuple’ın ilk elemanı, belirtilen ayın ilk gününün haftanın hangi gününe denk geldiğini gösteren bir sayıdır (Pazartesi=0, Salı=1, Çarşamba=2, vb.). İkinci elemanı ise, belirtilen ayın kaç gün çektiğini gösteren bir sayıdır.

Burada biz, monthrange(yil, ay) ifadesinden gelen ikinci elemanı kullanarak, bir ayın kaç gün çektiğini öğreniyoruz. Bu sayede, oluşturacağımız klasörlerin sadece o ayın gerçek gün sayısı kadar olmasını sağlıyoruz. calendar modülü, Python’ın standart kütüphanesinde bulunur ve takvim işlemleri yapmak için kullanılabilir.

Benzer Yazılar

Gui Dersleri #8 | LabelFrame kullanımı ve TopLevel kullanımı

Python 1 yıl önce

Arkadaşlar merhaba bu makalemizde sizlere python’da LabelFrame kullanımı ve TopLevel kullanımının nasıl yappacağımızı anlatacağım.  Ayrıca size bu konu hakkında çektiğim video’yu bırakıyorum isteyen video izler isteyen aşağıdaki makaleyi okur. Şimdiden iyi seyirler ve iyi okumalar dilerim. ☺ LabelFrame kullanımı : LabelFrame widget’ı, bir çerçeve içindeki bir etiketle birlikte bir grup widget’ı oluşturmanıza olanak tanır. LabelFrame widget’ı, bir Frame widget’ının özelliklerine sahiptir ve ayrıca bir başlık etiketi içerir. Bu widget’lar, diğer widget’ları gruplandırmak için kullanılabilir. from tkinter import* pencere=Tk() pencere.title("label Frame örneği") pencere.geometry("400×300+200+200") kisi_bilgileri=LabelFrame(pencere,text="nüfus örneği", width=300,height=200) kisi_bilgileri.pack(pady=30) kisi_ad=Label(kisi_bilgileri,text="ad soyad") kisi_ad.place(x=20,y=20) kisi_ad_giris=Entry(kisi_bilgileri) kisi_ad_giris.place(x=120,y=20) pencere.mainloop()   yukarıdaki kodumuzda görüleceği üzere formlarda widgetların daha düzenli görünmesini sağlayan labelFrame’mizi  kisi_bilgileri=LabelFrame(pencere,text=”nüfus örneği”, width=300,height=200) şeklinde yükseklik ve genişlik değerleri vererek tanımladık. Bundan sonra ise ekleyeceğimiz widgetları pencere üzerinde tanımlamak yerine kisi_ad=Label(kisi_bilgileri,text=”ad soyad”) buradaki gibi kisi_bilgileri adında tanımladığım LabelFrame değişkeni üzerine eklediğimizi belirtiyoruz. kisi_ad_giris.place(x=120,y=20) burada da Entry nesnesini place özelliği ile x ve y değerlerini vererek konumlandırıyoruz. kodumuzun ekran […]

Python Dersleri | Bayrama özel uygulama yapımı

Python 1 yıl önce

Arkadaşlar Merhabalar bugunkü makalemizde bayramda aklıma gelen bir uygulama senaryosunu gerçekleştirmesini size anlatıyor olacağım. Bayramda vakit ayırıp bunu yeni gerçekleştirdim umarım beğenirsiniz. Bayramınızı kutluyorum şimdiden iyi seyirler ve iyi okumalar dilerim. def __init__(self): Burada yapıcı(constructor ) fonksiyonumuzu tanımladık self belirteci  ile burada attribute’lar ve fonksiyonlara ulaşıyor oalcağız. self.pencere = tk.Tk() self.pencere.title("Bayram Uygulaması") self.pencere.geometry("500×400+500+300") burada pencere ayarlamasınız yaptık. self.soru1=tk.Label(self.pencere,text="1. Mezarlık ziyareti yapıldı mı?") self.soru1.grid(row=0,column=0) self.evet1=tk.Button(self.pencere,text="Evet",command=self.mezarlikEvet) self.evet1.grid(row=0,column=1) burada soru etkietimizi ve yanlarından evet ve hayır butonlarını ekledik burada grid(row,column) yapısına değinecek olursak elemanlarımı grid şeklinde bize yerleştirmemizi sağlayacaktır. def mezarlikEvet(self): self.skor+=20 self.evet1.config(state="disabled") self.hayir1.config(state="disabled") self.guncelle() def mezarlikHayir(self): self.evet1.config(state="disabled") self.hayir1.config(state="disabled") self.guncelle() burada ise buttonlarımızın command parametresine karşılık gelen fonksiyonlarımızı doldurduk. if(self.skor>=80): sonuc = "Neredeyse tüm görevleri yapmışssın helal sana be!🎊🎇 " elif(self.skor>=60 and self.skor<80): sonuc = "Kurban bayramının gerekliliklerini orta düzeyde karşılıyorsun. 😊" elif(self.skor>50 and self.skor<60): sonuc = "kurban bayramının olması gerektiği gibi değil maelesef 😔" else: sonuc = "olmaz öyle kardeşim böyle bayramda […]

Gui Dersleri #7 | Canvas kullanımı, Scale kullanımı ve Scrollbar kullanımı ile ilgili işlemler

Python 1 yıl önce

Arkadaşlar merhaba bu makalemizde sizlere Canvas(Tuval) kullanımı, Scale(ölçek) kullanımı ve Scrollbar(Kaydırma çubuğu) kullanımının nasıl oluşturacağını anlatıyor olacağım ve bunlarla ilgili örnek uygulama yapacağım. Ayrıca size bununla ilgili yukarıda bir örnek video bırakıyorum isteyen video izler isteyen aşağıdaki makaleyi okur. Şimdiden iyi seyirler ve iyi okumalar dilerim. ☺ Canvas(Tuval) kullanımı: Canvas widgeti, Tkinter’da kullanılan bir çizim alanıdır. Bu widgeti kullanarak grafikler, şekiller, metinler ve diğer çizim öğelerini ekrana çizebilirsiniz. Canvas, çeşitli interaktif grafik uygulamaları ve veri görselleştirme için kullanışlıdır. from tkinter import* pencere=Tk() pencere.geometry("300×300+200+200") pencere.title("Canvas örneği") canvas1=Canvas(width=300,height=300,background="gray",highlightthickness=2) canvas1.pack() canvas1.create_rectangle(50,50,100,100,fill="blue") canvas1.create_oval(60,60,150,150,fill="red") canvas1.create_text(50,30,text="merhaba",font="courier 15",fill="yellow") pencere.mainloop()   Bu örnekte, Canvas sınıfını kullanarak bir tuval oluşturuyoruz. width ve height parametreleri tuvalin boyutlarını belirtir. create_rectangle() ve create_oval() metotlarıyla dikdörtgen ve elips gibi çizimler yapabiliriz. Ayrıca create_text() metoduyla da belirtilen özellikte bir text yazısı yazar. Kodlarımızın ekran çıktısı aşağıdaki gibidir:   Scale(Ölçek) kullanımı Scale widgeti, Tkinter’da kullanılan bir kaydırma çubuğu bileşenidir. Kullanıcının bir aralıktaki bir değeri seçmesini […]

0 Yorum

Yorum Yaz

Rastgele