Python

Cara Membaca dan Menulis File INI dan Conf Menggunakan Python

Cara Membaca dan Menulis File INI dan Conf Menggunakan Python
Bahasa pemrograman Python dilengkapi dengan modul built-in yang berguna yang disebut "ConfigParser" yang dapat digunakan untuk menulis parameter konfigurasi untuk aplikasi dengan rapi. ConfigParser menggunakan bahasa konfigurasi yang terdefinisi dengan baik dan terstruktur sepenuhnya kompatibel dengan file INI yang ditemukan di Microsoft Windows. File INI dapat digunakan dengan aplikasi Python yang berjalan di Linux juga dan mereka menyediakan cara yang gigih untuk menyimpan dan mengambil nilai.

Di Linux, lebih umum untuk melihat “.conf" file dari ".ini" file. File Conf di Linux sama seperti file teks lainnya dan oleh karena itu, mereka dapat disusun dengan cara apa pun. Itu tergantung pada parser bagaimana menafsirkan ".file conf”. Modul ConfigParser Python dapat mengurai “.conf” juga (atau ekstensi acak lainnya), asalkan file-file ini didefinisikan dalam bahasa konfigurasi yang kompatibel dengan INI. Artikel ini akan menjelaskan tentang membaca dan menulis “.conf” di Linux menggunakan versi stabil terbaru dari Python 3. Perhatikan bahwa jika Anda mengganti semua kemunculan “.conf” dalam artikel ini dengan “.ini”, hasilnya akan sama. Proses dan kode yang dijelaskan di bawah ini sebagian besar harus kompatibel dengan Microsoft Windows juga, dengan beberapa perbedaan kecil. Meskipun perbedaan ini tidak akan dibahas dalam artikel ini.

Modul ConfigParser

Pengurai file konfigurasi atau ConfigParser adalah modul Python yang memungkinkan Anda membaca dan menulis file konfigurasi yang digunakan dalam aplikasi Python. Seperti dijelaskan di atas, modul ini mendukung sintaks file INI INI. Sangat sederhana”.ini” / “.conf" file terlihat seperti ini.

[DEFAULT]
suara = 1
musik = 1
volume = 0.8
resolusi = 1920x1080
[Pengguna]
# suara dapat memiliki 0 (salah) dan 1 (benar) sebagai nilai yang mungkin
suara = 1
; musik dapat memiliki 0 (salah) dan 1 (benar) sebagai nilai yang mungkin
musik = 0
Volume = 0.4
resolusi = 1280x720

Contoh ".conf" file di atas memiliki dua bagian, "DEFAULT" dan "User". Biasanya program Python dikodekan sedemikian rupa sehingga nilai bagian DEFAULT tidak pernah berubah. Bagian DEFAULT digunakan untuk mengatur ulang nilai keseluruhan atau individual ke nilai default. Bagian pengguna mencerminkan perubahan yang dibuat oleh pengguna akhir yang menggunakan program Python. Perhatikan bahwa nama bagian dapat berupa apa saja dan tidak perlu memiliki bagian DEFAULT sama sekali. Namun setiap kali bagian "DEFAULT" ada (nama harus dalam huruf besar), itu akan digunakan untuk memberikan nilai default dengan aman jika ConfigParser gagal mengurai variabel tertentu. Logika untuk menangani bagian ini, variabel di bawahnya dan nilai fallback harus didefinisikan dalam program Python itu sendiri. Simbol seperti “#” dan “;” dapat digunakan untuk menunjukkan komentar di “.file conf”. Semua pasangan nilai kunci dalam file konfigurasi tidak peka huruf besar-kecil, biasanya ditulis dalam huruf kecil.

Penanganan Tipe Data Oleh ConfigParser

Sebelum melanjutkan dengan beberapa contoh ConfigParser, penting untuk memahami penanganan tipe data oleh modul ini. Untuk ConfigParser, setiap bagian dari kode yang ditulis atau diuraikan adalah string. Itu tidak dapat membedakan antara angka atau format lainnya. Pemrogram perlu menulis logika dalam program mereka untuk mengubah string "1234" menjadi angka dengan menggunakan int("1234") saat membaca data dari ".file conf”.

Meskipun mengonversi ke angka menggunakan metode int dan float adalah tugas yang cukup mudah, mengonversi ke boolean bisa jadi rumit karena Python memperlakukan bool("any_string") sebagai True. Untuk mengatasi masalah ini, Anda dapat menggunakan pernyataan bersyarat yang memeriksa string tertentu. Modul ConfigParser juga menyediakan metode yang disebut “getboolean()”. Metode ini dapat membedakan nilai boolean 'yes'/'no', 'on'/'off', 'true'/'false' dan '1'/'0' dengan benar meskipun berupa string. ConfigParser juga menyertakan metode getint() dan getfloat() untuk kenyamanan Anda.

Menulis dan Menyimpan File Conf Baru Menggunakan ConfigParser

Mari kita asumsikan ".conf” file yang disebutkan di atas tidak ada dan Anda ingin membuatnya secara otomatis pada peluncuran pertama program. Kode di bawah ini akan membuat "pengaturan" baru.conf” di direktori tempat program Python dijalankan.

impor configparser
config = configparser.ConfigParser()
config['DEFAULT'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
config['Pengguna'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
dengan buka('pengaturan.conf', 'w') sebagai configfile:
konfigurasi.tulis (file konfigurasi)

Pernyataan pertama dalam kode di atas mengimpor modul ConfigParser. Pernyataan kedua membuat objek seperti kamus yang disebut "config". Anda sekarang dapat menggunakan sintaks kamus Python standar untuk mendefinisikan bagian dan variabel yang disertakan di bawahnya, seperti yang terlihat dari dua pernyataan berikutnya. Terakhir pernyataan "dengan terbuka" membuat "pengaturan" baru.conf” dan menulis bagian konfigurasi ke file.

Kode di atas berfungsi, tetapi ada masalah kecil dengannya. Itu membuat file pengaturan baru setiap kali program dijalankan, mengakibatkan penimpaan setiap pengguna yang melakukan pengeditan ke file pengaturan. Untuk memperbaiki masalah ini, Anda perlu memeriksa dua kondisi:

Kode yang dimodifikasi di bawah ini akan memeriksa dua kondisi dan hanya akan membuat file pengaturan baru jika kedua kondisi ini terpenuhi.

impor configparser
impor os
 
config = configparser.ConfigParser()
config['DEFAULT'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
config['Pengguna'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
pengaturan_file = os.jalan.dirname(os.jalan.jalur nyata(__file__))
+ os.sep + "pengaturan.konf"
jika tidak os.jalan.ada (pengaturan_file)
atau os.stat(pengaturan_file).st_ukuran == 0:
dengan buka('pengaturan.conf', 'w') sebagai configfile:
konfigurasi.tulis (file konfigurasi)

Pernyataan kedua dalam kode di atas mengimpor modul "os". Variabel “settings_file” menyimpan path lengkap ke “settings.conf” file yang akan dibuat di direktori skrip Python. Pernyataan berikutnya memeriksa dua kondisi yang disebutkan di atas. Klausa pertama dalam pernyataan itu cukup jelas. Klausa kedua memeriksa apakah ukuran file adalah "0 byte". File nol byte berarti file kosong tanpa data yang tersimpan di dalamnya. Sisa kodenya sama dengan contoh pertama yang disebutkan di atas.

Sejauh ini contoh kode yang dijelaskan di atas menyimpan file konfigurasi di direktori skrip Python itu sendiri. Namun, ini adalah praktik umum dan standar freedesktop untuk menyimpan file konfigurasi di ".config” di folder home. Contoh kode di bawah ini akan membuat "pengaturan" baru.conf” di file “~/.folder config/testapp”.

impor configparser
impor os
 
app_name = "testapp"
config_folder = os.jalan.bergabung.jalan.expanduser("~"), '.config', nama_aplikasi)
os.makedirs(config_folder, ada_ok=True)
settings_file = "pengaturan.konf"
full_config_file_path = os.jalan.bergabung (config_folder, pengaturan_file)
 
config = configparser.ConfigParser()
config['DEFAULT'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
config['Pengguna'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
 
jika tidak os.jalan.ada (full_config_file_path)
atau os.stat(full_config_file_path).st_ukuran == 0:
dengan open(full_config_file_path, 'w') sebagai configfile:
konfigurasi.tulis (file konfigurasi)

Kode di atas hampir sama dengan contoh sebelumnya, hanya saja mengubah letak “setting”.conf” menjadi “~/.config/testapp/pengaturan.konf”. Variabel "config_folder" menyimpan path lengkap ke folder aplikasi yang akan dibuat di ".config” direktori (“~/.config/testapp/"). “os.pernyataan makedirs” hanya akan membuat folder aplikasi baru jika belum ada. Variabel “full_config_file_path” menyimpan path lengkap dari file pengaturan (“~/.config/testapp/pengaturan.konf"). Kode lainnya sudah cukup jelas.

Membaca File Conf Menggunakan ConfigParser

Mengurai file konfigurasi cukup mudah. ConfigParser mencoba membaca nilai menggunakan metode get(), getfloat(), getboolean() atau sintaks kamus. Jika terjadi kesalahan kunci, nilai dari bagian DEFAULT atau nilai fallback digunakan. Ini adalah praktik yang baik untuk mendefinisikan bagian DEFAULT atau nilai fallback untuk mencegah kesalahan utama. Anda dapat menggunakan pernyataan coba-kecuali juga untuk menekan kesalahan.

config = configparser.ConfigParser()
konfigurasi.baca (full_config_file_path)
 
is_sound_on = config['Pengguna'].getboolean('suara')
volume_level = config['Pengguna'].getfloat('volume')
resolusi = config['Pengguna']['resolusi']
 
# Nilai fallback "False" akan diabaikan karena sudah ada bagian DEFAULT.
# Dengan tidak adanya bagian DEFAULT, nilai fallback akan digunakan sebagaimana mestinya.
is_music_on = config['Pengguna'].getboolean('musik', Salah)
 
cetak (is_sound_on, is_music_on, volume_level, resolusi)

Dalam contoh kode di atas, “config.read” pernyataan digunakan untuk membaca data dari file konfigurasi. Dalam pernyataan berikut, berbagai metode get bawaan dan notasi kamus digunakan untuk membaca data:. Dalam deklarasi variabel “is_music_on”, argumen kedua adalah nilai fallback (False). Perhatikan bahwa nilai fallback akan memiliki prioritas lebih rendah daripada nilai yang ditentukan di bagian DEFAULT. Secara sederhana, nilai fallback tidak akan berpengaruh ketika pasangan nilai kunci sudah ada di bagian DEFAULTULT.

Kode Lengkap

Di bawah ini adalah seluruh kode yang menggabungkan pembuatan file konfigurasi pertama kali dan pembacaan file konfigurasi.

#! /usr/bin/python3
impor configparser
impor os
 
app_name = "testapp"
config_folder = os.jalan.bergabung.jalan.expanduser("~"), '.config', nama_aplikasi)
os.makedirs(config_folder, ada_ok=Benar)
settings_file = "pengaturan.konf"
full_config_file_path = os.jalan.bergabung (config_folder, pengaturan_file)
 
config = configparser.ConfigParser()
 
config['DEFAULT'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
config['Pengguna'] = "suara" : "1", "musik" : "1",
"volume" : "0.8", "resolusi" : "1920x1080"
 
jika tidak os.jalan.ada (full_config_file_path)
atau os.stat(full_config_file_path).st_ukuran == 0:
dengan open(full_config_file_path, 'w') sebagai configfile:
konfigurasi.tulis (file konfigurasi)
 
konfigurasi.baca (full_config_file_path)
is_sound_on = config['Pengguna'].getboolean('suara')
volume_level = konfigurasi['Pengguna'].getfloat('volume')
resolusi = config['Pengguna']['resolusi']
 
# Nilai fallback "False" akan diabaikan karena sudah ada bagian DEFAULT.
# Dengan tidak adanya bagian DEFAULT, nilai fallback akan digunakan sebagaimana mestinya.
is_music_on = config['Pengguna'].getboolean('musik', Salah)
 
cetak (is_sound_on, is_music_on, volume_level, resolusi)

Kesimpulan

ConfigParser di Python menyediakan cara yang berguna untuk menangani pengaturan dari kedua baris perintah dan aplikasi GUI Python. File konfigurasi ini juga dapat digunakan sebagai basis data berbasis teks yang ringan tetapi mungkin tidak cocok untuk tipe data tingkat lanjut, kumpulan data besar, dan sejumlah besar kueri.

Tiru klik Mouse dengan mengarahkan mouse menggunakan Clickless Mouse di Windows 10
Menggunakan mouse atau keyboard dalam posisi yang salah dari penggunaan yang berlebihan dapat menyebabkan banyak masalah kesehatan, termasuk keteganga...
Tambahkan gerakan Mouse ke Windows 10 menggunakan alat gratis ini
Dalam beberapa tahun terakhir, komputer dan sistem operasi telah berkembang pesat. Ada saat ketika pengguna harus menggunakan perintah untuk menavigas...
Kontrol & kelola gerakan mouse di antara beberapa monitor di Windows 10
Manajer Mouse Tampilan Ganda memungkinkan Anda mengontrol & mengonfigurasi gerakan mouse di antara beberapa monitor, dengan memperlambat gerakannya di...