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 Soket Programlama

Merhaba arkadaşlar. Bugün sizlerle birlikte Python'da socket programlama yapacağız. Bunun için Python da socket kütüphanesini kullanacağız. Peki nedir bu socket programlama? Soket programlama, sizin iki program arası yada iki bilgisayar arası iletişim kurmanızı sağlar. İşte bizde bugün iki programımızı birbiri ile haberleştireceğiz. Bunun için elimizde iki program olacak. Birinci program,mesaj bekleyen program olacak, diğeri ise mesaj gönderen program.

Infix to postfix dönüşümü

Infix to postfix dönüşümü, operatorün ortada olduğu a+b yazım şeklini operatorün sonda olduğu ab+ yazım şekline dönüştürme işlemidir.  Infix gösterimi, bizler için kolay bir gösterim olsa da makineler için öyle değildir. İfadeyi soldan sağa doğru okurken a + b * c işleminde önce b ile c yi çarpıp sonra da a ile toplamayı kolay bir şekilde yapabiliriz çünkü bizim ifadeyi sıra ile soldan sağa adım adım giderek okuma zorunluluğumuz yok. Önce b*c nin öncelikle olduğunu görerek oradan başlar, sonra a ile kolayca toplarız.

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