Ana içeriğe atla

ConfigParser Kullanımı

Daha önce programlarınızın dosyalarını incelediyseniz, .ini,.cfg uzantılı dosyalar olduğunu görmüşsünüzdür. Bu dosyalar, programlara ait birtakım veriler içerirler. Programların yapılandırma dosyaları diyebiliriz. Örneğin, Python IDLE arayüzünü kendinize göre değiştirdiğinizde, bu değişimi bir sonraki açılışta tekrar hatırlamak için bu tercihlerinizi Belgeler\.idlerc dizini altında .cfg dosyaları içerisinde saklar. Böylece IDLE açıldığında bu dosyalara bakarak arayüzü oluşturur. İçeriği şuna benzerdir



Bizler de bir program yazarken verilerimizi böyle basit dosyalarda saklamak isteyebiliriz. Ancak dikkat edin, bu tür dosyalara genelde yapılandırma ayarları kaydedilir, kritik bilgiler içeren veriler değil. O yüzden, programımıza ait yapılandırma verilerini bu dosyalarda saklayabiliriz.

Python herzaman ki gibi bizleri düşünmüş ve bunu yapabilmemiz için bizlere bir modül sunmuş. ConfigParser. Bu modülü kullanarak yapılandırma dosyalarını okuyabilir, düzenleyebilir, veya sözlük yapılarını kullanarak yeni bir yapılandırma dosyası oluşturabilirsiniz.

ConfigParser modülü, hem Python2 hem de Python3 de kullanılabilen bir modüldür. Aralarında bazı ufak tefek farklılıklar var, ancak çok da göze batmıyor.

İlk olarak ConfigParser modülü Python2 de ConfigParser, Python3 de configparser olarak isimlendirilmiş. Kullandığınız Python versiyonuna göre uygun olanı import ederek kullanabilirsiniz. Biz burada Python3 baz alarak örneklerimizi yapacağız. Öyleyse, artık başlayalım

İlk olarak bir tane dosya oluşturalım ve içerisine şunları ekleyelim. Bu dosya, bizim parse edeceğimiz dosya olacaktır.




[tema1] ve [tema2] , yapılandırma dosyamızın bölümleridir(sections). Bunların altında bulunan değerlere ulaşmak için bölüm adlarını kullanacağız, böylece karışıklık olmamış olur. Örneğin tema1 ve tema2 de de bulunan foreground değerine ulaşmak için önce ilgili bölüme, sonra değere  ulaşacağız.

Şimdi dosyamızı ayar.ini olarak kaydedelim. İstediğiniz uzantıda da kaydedebilirsiniz, ancak bu dosyanın bir yapılandırma dosyası olduğun belirtmek her zaman daha iyidir. Şimdi, bu dosyayı python ile nasıl açacağımızı ve nasıl parse edeceğimizi görelim




Eğer daha önce Python'da sözlükleri kullandıysanız yukarıdaki kod size çok tanıdık gelecektir. Çünkü, parse ettiğimiz veriler aynen sözlük yapısı gibi tutulur.

Gördüğünüz gibi, parse etmek ve bunlara erişmek oldukça kolay. Peki bu değerleri nasıl değiştireceğiz ve kaydedeceğiz? Yukarıdaki örneğimizi tekrar düzenleyelim



Bir yapılandırma dosyasından verileri uygun formatta okumak isteyebilirsiniz. Çünkü normal olarak okuduğunuzda bir string olarak okursunuz, istediğiniz formata kendiniz çevirmeniz gerekir. Ancak get metotlarını kullanarak okuyacağımız veriyi bize istediğimiz formatta vermesini isteyebiliriz. Örneğin okuyacağınız değer sayıysa, bunu string olarak alıp int tipine dönüştürmek yerine direkt olarak int tipinde elde edebilirsiniz.

Bunu yapmanın iki yolu var. Örneğimizle görelim




Diğer metotlar

getfloat: virgüllü sayı olarak okumayı sağlar
getboolean: mantıksal ifade olarak okumayı sağlar(True veya False)
getint: tamsayı olarak okumayı sağlar

Şimdiye kadar hep dosyadan okuma üzerine gördük. Şimdi de program içerisinde oluşturdumuz yapılandırma ayarlarını nasıl dosyaya kaydedebileceğimizi göreceğiz. Bir yapılandırma dosyası içeriği oluşturmak için sözlük yapılarını kullanacağız. Ve daha sonra bu sözlüğü dosyamıza kaydedeceğiz



Program çalışıp işini bitirdikten sonra, programın bulunduğu dizinde kullanici.ini dosyası olacak ve içeriği şu şekilde olacaktır.



Şimdiye gördüğümüz herşey, import ederken yazımı hariç, Python3 ve Python2 de aynıdır. Yine de bir sorun yaşarsanız lütfen yorum olarak belirtin.

Yazımızın sonuna geldik, bir başka yazıda buluşmak dileğiyle :)

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

Python Subprocess

subprocess modülü, yeni bir process oluşturmayı sağlayan, bunların girdi-çıktılarını ele alma imkânı veren ve dönüş kodlarını almayı sağlayan bir modüldür. Yani daha basit bir şekilde, program içinde program çalıştırmaya imkan veren bir modüldür. Subprocess Modülünün Kullanımı subprocess basit bazı process'leri kullanmak için birkaç tane fonksiyon sunuyor. Daha karmaşık bir process çalıştırmak isterseniz, Popen sınıfını kullanabilirsiniz. Bunlara detaylı bir şekilde değinmeye çalışacağız. Şimdi basit fonksiyonları inceleyelim

CLAHE (Contrast Limited Adaptive Histogram Equalization) Histogram Eşitleme Tekniği

Bu yazıda CLAHE algoritmasını nasıl uygulayacağımızı ve verilen bir resmi histogram eşitlemesi için nasıl işleyeceğimizi öğreneceğiz. Bu yazıda, CLAHE algoritmasının, görüntü iyileştirme için nasıl uygulandığını göreceğiz. CLAHE, görüntü kontrast değerlerinin aşırı yüksekliği ile ilgilenen AHE algoritmasının bir varyantıdır. CLAHE, bütün resim üzerinde işlem yapmak yerine kesitler olarak adlandırılan küçük bölgeler üzerinde işlem yapar. Küçük kesitlerde yapılan işlem sonrasında oluşan yapay sınırları kaldırmak için bilinear interpolasyon işlemi uygulanarak bu küçük kesitler birleştirilerek son görüntü elde edilir.  Bu algoritma görüntü kontrastını iyileştirmek için kullanılabilir. CLAHE algoritmasını renkli görüntülere de uygulayabiliriz. Genelde HSV görüntülerin yalnızca parlaklık kanalına uygulandığı durumlarda, tüm RGB kanallara uygulamaktan çok daha başarılı sonuçlar elde etmemizi sağlar.  CLAHE algoritması uygulanırken 2 parametre önemlidir. Birincisi clipLimit parametres...

Java Process Çıktısı Türkçe Karakter Sorunu

Merhaba arkadaşlar. Bildiğiniz gibi Java'da bir process oluşturmak için ProcessBuilder sınıfından yararlanıyoruz. Oluşturduğumuz process eğer çıktı üretiyorsa bu çıktıyı okuyabiliyoruz. Ancak bu çıktı Türkçe karakter içeriyorsa, biz bu çıktıyı okuduğumuz zaman düzgün bir şekilde elde edemiyoruz. Daha doğrusu kodlama Türkçe'ye göre yapılmadığı için (ş,ç,ğ,ı,ü,ö) karakterleri farklı bir şekilde ekranda görüntüleniyor. Öncelikle sorunu gözle görelim ve bunu çözmeye çalışalım. Aşağıda ping atmak üzere yazdığım bir program var. Ping atabilmek için bir process oluşturuyorum ve çıktıları ekrana yazıyorum. İşletim sistemimi Türkçe kullandığım için çıktı da Türkçe ifadeler geçiyor.