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

İbrahim ATLI

Updated on:

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.

 

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.

 

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:

 

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.

Yorum yapın