Linux'ta ".conf” dosyaları yerine “.ini” dosyaları. Linux'taki conf dosyaları diğer metin dosyaları gibidir ve bu nedenle herhangi bir şekilde yapılandırılabilirler. Ayrıştırıcıya bir “ nasıl yorumladığına bağlıdır.conf” dosyası. Python'un ConfigParser modülü, “.conf” dosyalarını da (veya diğer rastgele uzantıları), bu dosyaların INI uyumlu yapılandırma dilinde tanımlanmış olması koşuluyla. Bu makale okuma ve yazmayı açıklayacaktır “.Python 3'ün en son kararlı sürümünü kullanan Linux'ta conf” dosyaları. “ Tüm oluşumlarını değiştirirseniz, şunu unutmayın:.conf” uzantısı ile bu makaledeki.ini” uzantısı, sonuç aynı olurdu. Aşağıda açıklanan işlem ve kod, birkaç küçük farklılık dışında, çoğunlukla Microsoft Windows ile uyumlu olmalıdır. Bu farklılıklar bu makalede ele alınmayacak olsa da.
ConfigParser Modülü
Yapılandırma dosyası ayrıştırıcısı veya ConfigParser, Python uygulamalarında kullanılan yapılandırma dosyalarını okumanıza ve yazmanıza izin veren bir Python modülüdür. Yukarıda açıklandığı gibi, bu modül INI dosya sözdizimini destekler. Çok basit"."/".conf” dosyası şöyle görünür.
[VARSAYILAN]ses = 1
müzik = 1
hacim = 0.8
çözünürlük = 1920x1080
[Kullanıcı]
# ses, olası değerler olarak 0 (yanlış) ve 1 (doğru) olabilir
ses = 1
; müzik, olası değerler olarak 0 (yanlış) ve 1 (doğru) olabilir
müzik = 0
Hacim = 0.4
çözünürlük = 1280x720
Örnek ".Yukarıdaki conf” dosyasının “DEFAULT” ve “User” olmak üzere iki bölümü vardır. Genellikle Python programları, VARSAYILAN bölüm değerleri asla değiştirilmeyecek şekilde kodlanır. VARSAYILAN bölümü, genel veya bireysel değerleri varsayılan değerlere sıfırlamak için kullanılır. Kullanıcı bölümü, Python programını kullanan bir son kullanıcı tarafından yapılan değişiklikleri yansıtır. Bölüm adlarının herhangi bir şey olabileceğini ve bir VARSAYILAN bölümün olması gerekmediğini unutmayın. Ancak, "VARSAYILAN" bölümü mevcut olduğunda (ad büyük harf olmalıdır), ConfigParser belirli değişkenleri ayrıştırmayı başaramazsa, varsayılan değerleri güvenli bir şekilde sağlamak için kullanılacaktır. Bu bölümleri, altlarındaki değişkenleri ve geri dönüş değerlerini işleme mantığı Python programının kendisinde tanımlanmalıdır. “#” ve “;” gibi simgeler " içindeki yorumları belirtmek için kullanılabilir.conf” dosyaları. Yapılandırma dosyasındaki tüm anahtar/değer çiftleri büyük/küçük harfe duyarsızdır ve genellikle küçük harfle yazılır.
ConfigParser Tarafından İşlenen Veri Tipleri
Bazı ConfigParser örnekleriyle ilerlemeden önce, bu modül tarafından işlenen veri tiplerini anlamak önemlidir. ConfigParser için, yazılan veya ayrıştırılan her kod parçası bir dizedir. Sayılar veya başka herhangi bir format arasında ayrım yapamaz. Programcıların bir “1234” dizesini int(“1234”) kullanarak bir “dizisinden veri okurken” sayıya dönüştürmek için programlarına mantık yazmaları gerekir.conf” dosyası.
int ve float yöntemini kullanarak sayılara dönüştürmek oldukça kolay bir iş olsa da, Python bool(“any_string”) işlevini True olarak ele aldığından boolea dönüştürmek zor olabilir. Bu sorunun üstesinden gelmek için belirli bir dizeyi kontrol eden koşullu ifadeleri kullanabilirsiniz. ConfigParser modülü ayrıca “getboolean()” adlı bir yöntem sağlar. Bu yöntem, 'yes'/'no', 'on'/'off', 'true'/'false' ve '1'/'0' boolean değerlerini string olsalar bile doğru bir şekilde ayırt edebilir. ConfigParser ayrıca size kolaylık olması için getint() ve getfloat() yöntemlerini de içerir.
ConfigParser Kullanarak Yeni Bir Conf Dosyası Yazma ve Kaydetme
varsayalım ki “.conf” dosyası mevcut değil ve programın ilk açılışında otomatik olarak oluşturmak istiyorsunuz. Aşağıdaki kod yeni bir “ayarlar” oluşturacaktır.Python programının çalıştırıldığı dizindeki conf” dosyası.
yapılandırma ayrıştırıcısını içe aktaryapılandırma = yapılandırma ayrıştırıcı.ConfigParser()
config['DEFAULT'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
config['Kullanıcı'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
open ile ('ayarlar.conf', 'w') yapılandırma dosyası olarak:
yapılandırma.yaz(yapılandırma dosyası)
Yukarıdaki koddaki ilk ifade, ConfigParser modülünü içe aktarır. İkinci ifade, "config" adlı sözlük benzeri bir nesne oluşturur. Sonraki iki ifadeden de anlaşılacağı gibi, altlarında bulunan bölümleri ve değişkenleri tanımlamak için artık standart Python sözlük sözdizimini kullanabilirsiniz. Son olarak “with open” ifadesi yeni bir “ayarlar” oluşturur.conf” dosyasını açar ve dosyaya yapılandırma bölümlerini yazar.
Yukarıdaki kod çalışıyor, ancak bununla ilgili küçük bir sorun var. Program her çalıştırıldığında yeni bir ayar dosyası oluşturur, bu da ayarlar dosyasında kullanıcı tarafından yapılan düzenlemelerin üzerine yazılmasına neden olur. Bu sorunu gidermek için iki koşulu kontrol etmeniz gerekir:
- Ayarlar dosyası var mı? Değilse, yalnızca dosya yoksa yeni bir ayar dosyası oluşturun.
- Ayarlar dosyası var, ancak herhangi bir veri içeriyor mu?? Boş mu? Yeni yapılandırma verilerini yalnızca boşsa ayarlar dosyasına yazın.
Aşağıdaki değiştirilmiş kod, iki koşulu kontrol edecek ve yalnızca bu iki koşulun karşılanması durumunda yeni bir ayar dosyası oluşturacaktır.
yapılandırma ayrıştırıcısını içe aktarişletim sistemini içe aktar
yapılandırma = yapılandırma ayrıştırıcı.ConfigParser()
config['DEFAULT'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
config['Kullanıcı'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
settings_file = işletim sistemi.yol.dizin adı.yol.gerçek yol(__file__))
+ işletim sistemi.eylül + "ayarları.konf"
işletim sistemi değilse.yol.var(settings_file)
veya işletim sistemi.stat(ayarlar_dosyası).st_size == 0:
open ile ('ayarlar.conf', 'w') yapılandırma dosyası olarak:
yapılandırma.yaz(yapılandırma dosyası)
Yukarıdaki koddaki ikinci ifade “os” modülünü içe aktarır. “settings_file” değişkeni, “ayarlara” giden tam yolu saklar.Python betiğinin dizininde oluşturulacak conf” dosyası. Sonraki ifade, yukarıda belirtilen iki koşulu kontrol eder. Açıklamadaki ilk madde açıklayıcıdır. İkinci fıkra, dosya boyutunun “0 bayt” olup olmadığını kontrol eder. Sıfır baytlık bir dosya, içinde hiçbir verinin saklanmadığı boş bir dosya anlamına gelir. Kodun geri kalanı yukarıda belirtilen ilk örnekle aynıdır.
Şimdiye kadar yukarıda açıklanan kod örnekleri, yapılandırma dosyasını Python betiğinin kendi dizinine kaydeder. Bununla birlikte, yapılandırma dosyalarını "" klasörüne kaydetmek yaygın bir uygulamadır ve ücretsiz masaüstü standardıdır.ana klasördeki config” dizini. Aşağıdaki kod örneği yeni bir "ayarlar" oluşturacaktır.conf” dosyasında “~/.config/testapp” klasörü.
yapılandırma ayrıştırıcısını içe aktarişletim sistemini içe aktar
app_name = "testapp"
config_folder = işletim sistemi.yol.katılmak.yol.genişletici("~"), '.yapılandırma', uygulama_adı)
işletim sistemi.makedirs(config_folder, entity_ok=Doğru)
settings_file = "ayarlar.konf"
full_config_file_path = işletim sistemi.yol.katıl(config_folder, settings_file)
yapılandırma = yapılandırma ayrıştırıcı.ConfigParser()
config['DEFAULT'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
config['Kullanıcı'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
işletim sistemi değilse.yol.var(full_config_file_path)
veya işletim sistemi.stat(full_config_file_path).st_size == 0:
configfile olarak open(full_config_file_path, 'w') ile:
yapılandırma.yaz(yapılandırma dosyası)
Yukarıdaki kod, "ayarların" konumunu değiştirmesi dışında, önceki örnekle neredeyse aynıdır.conf” dosyasını “~/.yapılandırma/testapp/ayarlar.konf”. "config_folder" değişkeni, " içinde oluşturulacak uygulama klasörünün tam yolunu saklar.config” dizini (“~/.yapılandırma/testapp/”). "os".makedirs” ifadesi, henüz mevcut değilse yalnızca yeni bir uygulama klasörü oluşturacaktır. “full_config_file_path” değişkeni, ayarlar dosyasının tam yolunu (“~/.yapılandırma/testapp/ayarlar.konf"). Kodun geri kalanı açıklayıcıdır.
ConfigParser Kullanarak Bir Conf Dosyasını Okuma
Bir yapılandırma dosyasını ayrıştırmak oldukça basittir. ConfigParser, get(), getfloat(), getboolean() yöntemlerini veya sözlük sözdizimini kullanarak bir değeri okumaya çalışır. Bir anahtar hatası durumunda, VARSAYILAN bölümündeki değerler veya geri dönüş değerleri kullanılır. Anahtar hatalarını önlemek için VARSAYILAN bölüm veya geri dönüş değerleri tanımlamak iyi bir uygulamadır. Hataları bastırmak için try-except deyimlerini de kullanabilirsiniz.
yapılandırma = yapılandırma ayrıştırıcı.ConfigParser()yapılandırma.oku(full_config_file_path)
is_sound_on = config['Kullanıcı'].getboolean('ses')
volume_level = config['Kullanıcı'].getfloat('hacim')
çözünürlük = yapılandırma['Kullanıcı']['çözünürlük']
# Zaten bir DEFAULT bölümü olduğu için "False" geri dönüş değeri yoksayılacak.
# DEFAULT bölümünün olmaması durumunda, geri dönüş değeri usulüne uygun olarak kullanılacaktır.
is_music_on = config['Kullanıcı'].getboolean('müzik', Yanlış)
yazdır (is_sound_on, is_music_on, volume_level, çözünürlük)
Yukarıdaki kod örneğinde, “config.read” ifadesi, bir yapılandırma dosyasından veri okumak için kullanılır. Aşağıdaki ifadelerde, verileri okumak için çeşitli yerleşik get yöntemleri ve sözlük gösterimleri kullanılır. “is_music_on” değişken bildiriminde, ikinci argüman geri dönüş değeridir (False). Yedek değerlerin, VARSAYILAN bölümünde tanımlanan değerlerden daha düşük önceliğe sahip olacağını unutmayın. Basit bir ifadeyle, VARSAYILAN bölümünde zaten bir anahtar/değer çifti mevcut olduğunda, yedek değerlerin hiçbir etkisi olmayacaktır.
Tam Kod
Aşağıda, hem yapılandırma dosyasının ilk çalıştırma oluşturmasını hem de yapılandırma dosyasının okunmasını birleştiren kodun tamamı verilmiştir.
#! /usr/bin/python3yapılandırma ayrıştırıcısını içe aktar
işletim sistemini içe aktar
app_name = "testapp"
config_folder = işletim sistemi.yol.katılmak.yol.genişletici("~"), '.yapılandırma', uygulama_adı)
işletim sistemi.makedirs(config_folder, entity_ok=Doğru)
settings_file = "ayarlar.konf"
full_config_file_path = işletim sistemi.yol.katıl(config_folder, settings_file)
yapılandırma = yapılandırma ayrıştırıcı.ConfigParser()
config['DEFAULT'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
config['Kullanıcı'] = "ses": "1", "müzik": "1",
"hacim" : "0.8", "çözünürlük": "1920x1080"
işletim sistemi değilse.yol.var(full_config_file_path)
veya işletim sistemi.stat(full_config_file_path).st_size == 0:
configfile olarak open(full_config_file_path, 'w') ile:
yapılandırma.yaz(yapılandırma dosyası)
yapılandırma.oku(full_config_file_path)
is_sound_on = config['Kullanıcı'].getboolean('ses')
volume_level = config['Kullanıcı'].getfloat('hacim')
çözünürlük = yapılandırma['Kullanıcı']['çözünürlük']
# Zaten bir DEFAULT bölümü olduğu için "False" geri dönüş değeri yoksayılacak.
# DEFAULT bölümünün olmaması durumunda, geri dönüş değeri usulüne uygun olarak kullanılacaktır.
is_music_on = config['Kullanıcı'].getboolean('müzik', Yanlış)
yazdır (is_sound_on, is_music_on, volume_level, çözünürlük)
Sonuç
Python'da ConfigParser, hem komut satırı hem de GUI Python uygulamalarının ayarlarını işlemek için kullanışlı bir yol sağlar. Bu yapılandırma dosyaları, hafif metin tabanlı veritabanları olarak da kullanılabilir ancak gelişmiş veri türleri, büyük veri kümeleri ve çok sayıda sorgu için uygun olmayabilir.