22
Şub

Python’da programınızın ayarlarını kaydetmek için veya başka her türlü işinizi halletmek için ayar dosyalarını kullanabilirsiniz. Bu dosyalarla uğraşmak için ConfigParser(python 3.0′da configparser) adlı modülü kullanıyorum. Öncelikle bir ayar dosyasının yapısına bakalım:

[Genel]
başlık=Ayar Dosyası Okuma Örneği
[Grup]
sayı=2
hede=hödö
doğru/yanlış=true

Basit bir ayar dosyası buna benzer. Şimdi bir örnek kod ile bir ayar dosyasını nasıl okuyacağımızı görelim:

# -*- coding: utf-8 -*-
import ConfigParser # python 3.0'da configparser
 
cp = ConfigParser.RawConfigParser() #config parser'ımızı tanımladık
dosya = open("/ayar/dosyasının/yolu", 'r')  #ayar dosyamızı okuma modunda açtık
cp.readfp(dosya) #readfp komutuyla dosyayı cp'ye okutturduk.
 
baslik = cp.get("Genel", "başlık") #Üstteki ini dosyasındaki Genel grubundaki başlık değerini aldık. 
sayi = cp.getint("Grup", "sayı") #Grup grubundaki sayı değerini bir int olarak aldık.
dogru_yanlis = cp.getboolean("Grup", "doğru/yanlış") #bu şekilde bir bool değeri döndürdük. 
 #"true, 1, yes, on" gibi değerler True döndürürken "false, 0, no, off" gibi değerler False döndürür
 
print baslik #"Ayar Dosyası Okuma Örneği" şeklinde bir çıktı verecektir.
print sayi #2 şeklinde bir çıktı verecektir.
print dogru_yanlis #True çıktısı verecektir.

Ayar dosyası oluşturup içine yazmak için şöyle bir örnek yapalım:

# -*- coding: utf-8 -*-
import ConfigParser
 
cp = ConfigParser.RawConfigParser() #config parser'ımızı tanımladık
 
cp.add_section("Grup1") #Grup1 adında bir grup oluşturduk
cp.set("Grup1", "deneme", "deneme değeri") #Grup1'e deneme adında bir girdi oluşturduk ve değerini "deneme değeri" koyduk.
cp.set("Grup1", 'deneme2', 'true')
cp.set("Grup1", "deneme3", '5.1321')
 
dosya = open("/ayar/dosyasının/yolu", 'w')  #dosyayı oluşturduk
cp.write(dosya) #dosyanın içine yazdık
dosya.close() #dosyamızı kapattık.
 
"""
Dosyanın şuna benzer bir içeriği olacaktır:
 
[Grup1]
deneme = deneme değeri
deneme2 = true
deneme3 = 5.1321
"""
3
Ara

Dizinler ve dosyalarla çalışıyorsanız, muhtemelen os.path modülünün sağladığı metodlar işinize yarayacaktır. İşte sık kullandığım metodlardan bazıları:

import os

DIR = '/etc./conf.d'

for filename in os.listdir(DIR):
    filepath = os.path.join(DIR, filename)
    print filepath

os.path.join() metodu ile, işletim sisteminin ne olduğuna bakmaksızın, dosya/dizin yolu birleştirme işlemi yapabilirsiniz. Bu metod, dosya yolunu oluşturacak isimleri kontrol ederek hataları da önler.

>>> import os.path
>>> print os.path.join("/a/", "b", "c/", "d/")
/a/b/c/d
>>> print os.path.join("/a/", "b", "/c/", "d/")
/c/d

Sık kullandığım bir başka metod, dosya yolundan sadece dizin yolunu bulan os.path.dirname() ve onun kardeşi os.path.basename()

>>> import os.path
>>> print os.path.dirname("/a/b/c/d")
/a/b/c
>>> print os.path.basename("/a/b/c/d")
d

Son olarak, verilen dosya yolunun gerçek adresini döndüren os.path.realpath() metodu hayat kurtarabilir. Bu metod, sembolik ya da statik linkleri takip ederek sistemdeki gerçek dosya yolunu bulmada da kullanılabilir.

>>> import os.path
>>> print os.path.realpath("/a/../b/../c")
/c
>>> print os.path.realpath("/dev/disk/by-label/../by-label/PARDUS_ROOT")
/dev/sda1