Python – Dizindeki Dosya İsimlerini Topluca Değiştirme

Python dili ve kullanım alanları hakkında bilgi sahibi değilseniz araştırarak ne kadar kuvvetli bir dil olduğunu öğrenebilirsiniz. Şu an çalıştığım yerde Raspberry Pi üzerinden GPIO işlemleri yapmak için, hem masaüstü hem de Raspberry Pi ekranı için görsel arayüzler tasarlamak için ve de bazı hayatınızı kolaylaştırabilecek kod blokları yazarak iş yükünüzü çok kolay bir şekilde azaltabilmenize fayda sağlıyor.

Üzerinde çalıştığımız bir projede içerisinde neredeyse 2.000 JPG, PNG ve PDF dosyası olan bir klasör vardı ve bizden ilk aşama için istenilen şey bu görsellerin hepsinin ismindeki boşlukların “-” ile değiştirilmesi, tüm Türkçe karakterlerin Unicode karakterlere dönüştürülmesi ve tüm görsel adının küçük harf olmasıydı. Belki 20-30 dosya için bu işlemi el ile yapmak daha kolay bir yol olabilir ancak söz konusu 2.000 dosya ise bu iş çok farklı boyutlara gidiyor demektir. Bu işlem için bir Python script’i yazarak tüm işlemi tek bir komut ile yapabileceğimi düşündüm ve aşağıda gördüğünüz script’i yazdım.

Burada yaptığımız şey “path” değişkeni ile script’in bulunduğu klasörün yolunu alıyoruz ve ardından bu yolunda altındaki – tüm alt klasörler de dahil olmak üzere – tüm PDF dosyalarını bir listeye atıyoruz.

Ardından “rename()” fonksiyonu içerisinde “replace” fonksiyonu ile tüm boşlukları “-” ile değiştiriyoruz ve sonra “lower” fonksiyonu ile tüm karakterleri küçültükten sonra “translate” fonksiyonu sayesinde bir üst satırda oluşturmuş olduğumuz “translationTable” içerisinde belirttiğimiz karakterlerin değişimini yapıyoruz.

Eğer PDF değil de JPG veya PNG dosyalarına – veya istediğiniz herhangi bir farklı dosya tipi için – aynı işlemi uygulamak istiyorsanız “files” listesini oluşturduğumuz satır içerisindeki “.pdf” uzantısını istediğiniz uzantı ile değiştirmeniz yeterli olacaktır.

Bu işlem sayesinde belki 1 günden fazla sürecek bir işlemi yarım saatlik araştırmanın ardından yaklaşık 4 saniyede tamamlamış olduk. Bu şekilde kullandığım birkaç script daha mevcut. Önümüzdeki dönemlerde hepsini tek tek paylaşıyor olacağım.