Cara menggunakan python read ini file

Baca Tulis File Config .INI di Python

Januari 07, 2011

Jika anda menggunakan python dan hendak  membaca dan menulis file konfigurasi berformat seperti file yg berektention .ini di windows, kita bisa menggunakan library ConfigParser yang merupakan library standarnya python.

Struktur file ini adalah:
[Section]
option = value

Kali ini kita coba membaca file ini, dan jika filenya belum ada kita buat dengan default konfigurasi yang ditentukan di program.

import ConfigParser
import io

CONFIG_FILE = 'konpig.ini'
CONFIG_DEFAULT = """
[server]
ip = 0.0.0.0
port = 5050
"""
config = ConfigParser.RawConfigParser()
# tentukan defaultnya
config.readfp(io.BytesIO(CONFIG_DEFAULT))
# lalu di override (timpa) dari file konfigurasi
config.read(CONFIG_FILE)

print "IP :", config.get('server','ip')
print "PORT :", config.get('server','port')

with open(CONFIG_FILE, 'w') as configfile:
config.write(configfile)


Untuk fungsi-fungsi lainnya silakan merujuk pada dokumentasinya http://docs.python.org/library/configparser.html

Coding

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 yang 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 melihat file “.conf” daripada file “.ini”. 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 menginterpretasikan file “.conf”. Modul ConfigParser Python dapat mengurai file “.conf” juga (atau ekstensi acak lainnya), asalkan file-file ini didefinisikan dalam bahasa konfigurasi yang kompatibel dengan INI. Artikel ini akan menjelaskan membaca dan menulis file “.conf” di Linux menggunakan versi stabil terbaru dari Python 3. Perhatikan bahwa jika Anda mengganti semua kemunculan ekstensi “.conf” di artikel ini dengan ekstensi “.ini”, hasilnya akan menjadi 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. File “.ini” / “.conf” yang sangat sederhana terlihat seperti ini.

[DEFAULT]
sound = 1
music = 1
volume = 0.8
resolution = 1920x1080
[User]

# sound can have 0 (false) and 1 (true) as possible values
sound = 1
; music can have 0 (false) and 1 (true) as possible values
music = 0
Volume = 0.4
resolution = 1280x720

Contoh file “.conf” 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 user mencerminkan perubahan yang dibuat oleh user 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 dalam file “.conf”.

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 sebuah 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.

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

import configparser

config = configparser.ConfigParser()

config['DEFAULT'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}

config['User'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}

with open('settings.conf', 'w') as configfile:
    config.write(configfile)

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 file “settings.conf” baru 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 user yang melakukan pengeditan ke file pengaturan. Untuk memperbaiki masalah ini, Anda perlu memeriksa dua kondisi:

  • Apakah file pengaturan ada? Jika tidak, buat file pengaturan baru hanya jika file tersebut tidak ada.
  • File pengaturan ada, tetapi apakah itu berisi data? Apakah itu kosong? Tulis data konfigurasi baru ke file pengaturan hanya jika kosong.

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

import configparser
import os
 
config = configparser.ConfigParser()
config['DEFAULT'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}

config['User'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}

settings_file = os.path.dirname(os.path.realpath(__file__))
+ os.sep + "settings.conf"

if not os.path.exists(settings_file)
    or os.stat(settings_file).st_size == 0:
    with open('settings.conf', 'w') as configfile:
        config.write(configfile)

Pernyataan kedua dalam kode di atas mengimpor modul “os”. Variabel “settings_file” menyimpan path lengkap ke file “settings.conf” 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 byte nol berarti file kosong t
anpa 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 direktori “.config” di folder rumah. Contoh kode di bawah ini akan membuat file “settings.conf” baru di folder “~/.config/testapp”.

import configparser
import os
 
app_name = "testapp"
config_folder = os.path.join(os.path.expanduser("~"), '.config', app_name)
os.makedirs(config_folder, exist_ok=True)

settings_file = "settings.conf"

full_config_file_path = os.path.join(config_folder, settings_file)
 
config = configparser.ConfigParser()

config['DEFAULT'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}
config['User'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}
 
if not os.path.exists(full_config_file_path)
    or os.stat(full_config_file_path).st_size == 0:
    with open(full_config_file_path, 'w') as configfile:
        config.write(configfile)

Kode di atas hampir sama dengan contoh sebelumnya, hanya saja mengubah lokasi file “settings.conf” menjadi “~/.config/testapp/settings.conf”. Variabel “config_folder” menyimpan path lengkap ke folder aplikasi yang akan dibuat di direktori “.config” (“~/.config/testapp/”). Pernyataan “os.makedirs” hanya akan membuat folder aplikasi baru jika belum ada. Variabel “full_config_file_path” menyimpan path lengkap dari file pengaturan (“~/.config/testapp/settings.conf”). Sisa kode 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 error kunci, nilai dari bagian DEFAULT atau nilai fallback digunakan. Ini adalah praktik yang baik untuk mendefinisikan bagian DEFAULT atau nilai fallback untuk mencegah error utama. Anda dapat menggunakan pernyataan try-except juga untuk menekan error.

config = configparser.ConfigParser()
config.read(full_config_file_path)
 
is_sound_on = config['User'].getboolean('sound')
volume_level = config['User'].getfloat('volume')
resolution = config['User']['resolution']
 
# Fallback value "False" will be ignored as there is already a DEFAULT section.
# In absence of DEFAULT section, fallback value will be duly used.
is_music_on = config['User'].getboolean('music', False)
 
print (is_sound_on, is_music_on, volume_level, resolution)

Dalam contoh kode di atas, pernyataan “config.read” digunakan untuk membaca data dari file konfigurasi. Dalam pernyataan berikut, berbagai metode get built-in 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 yang lebih rendah daripada nilai yang ditentukan di bagian DEFAULT. Secara sederhana, nilai fallback tidak akan berpengaruh ketika pasangan nilai kunci sudah ada di bagian DEFAULT.

Kode Lengkap

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

#! /usr/bin/python3
import configparser
import os
 
app_name = "testapp"
config_folder = os.path.join(os.path.expanduser("~"), '.config', app_name)
os.makedirs(config_folder, exist_ok=True)
settings_file = "settings.conf"
full_config_file_path = os.path.join(config_folder, settings_file)
 
config = configparser.ConfigParser()
 
config['DEFAULT'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}

config['User'] = {"sound" : "1", "music" : "1",
"volume" : "0.8", "resolution" : "1920x1080"}
 
if not os.path.exists(full_config_file_path)
    or os.stat(full_config_file_path).st_size == 0:
    with open(full_config_file_path, 'w') as configfile:
        config.write(configfile)
 
config.read(full_config_file_path)
is_sound_on = config['User'].getboolean('sound')
volume_level = config['User'].getfloat('volume')
resolution = config['User']['resolution']
 
# Fallback value "False" will be ignored as there is already a DEFAULT section.
# In absence of DEFAULT section, fallback value will be duly used.
is_music_on = config['User'].getboolean('music', False)
 
print (is_sound_on, is_music_on, volume_level, resolution)

Kesimpulan

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

Bagaimana cara menjalankan Python?

Menjalankan Python.
Buka terminal CTRL + ALT + T..
Ketik python maka Anda akan masuk ke Python shell..
Tuliskan script Python Anda, contoh: print("Selamat datang di Python") . jika sudah tekan tombol ENTER , dan script Python akan dijalankan/eksekusi..
Untuk keluar dari Python shell ketik exit().

Apa fungsi open () dan close () pada Python?

Membaca File Per Baris Pertama kita membuka file dengan fungsi open() , selanjutnya mencoba membaca isinya per baris dengan method readlines() , dan terakhir menutup file dengan close() agar dihapus dalam memori.

Apa fungsi def di Python?

3. Sintaks Fungsi Penggunaan fungsi dalam python memiliki sintaks umum sebagai pedoman. Secara umum sintaks fungsi terdiri menjadi beberapa bagian berikut: kata kunci def, sebagai tanda bahwa blok kode program tersebut merupakan fungsi. nama fungsi, nama fungsi yang dibuat oleh programmer.

Dimana Python digunakan?

Python adalah bahasa pemrograman yang banyak digunakan dalam aplikasi web, pengembangan perangkat lunak, ilmu data, dan machine learning (ML). Developer menggunakan Python karena efisien dan mudah dipelajari serta dapat dijalankan di berbagai platform.