Config.ini (การจัดการค่าคอนฟิก)

การใช้ไฟล์ config.ini ใน Python มักถูกใช้เพื่อเก็บข้อมูลการตั้งค่าต่างๆ สำหรับโปรแกรม เช่น การกำหนดค่าฐานข้อมูล, ค่าเริ่มต้น, หรือการตั้งค่าอื่นๆ ที่สามารถปรับเปลี่ยนได้ง่ายโดยไม่ต้องแก้ไขโค้ด โปรแกรมจะสามารถอ่านข้อมูลจากไฟล์นี้และใช้ค่าเหล่านั้นในโค้ดได้โดยใช้ไลบรารี configparser ของ Python ซึ่งออกแบบมาเพื่อจัดการกับไฟล์ .ini

สร้างไฟล์ config.ini เพื่อเก็บการตั้งค่าของคุณ ตัวอย่างไฟล์มีโครงสร้างแบบนี้:

[DEFAULT]
app_name = MyApplication

[EMAIL]
user_mail = user@gmail.com
admin_mail = admin@toorobot.com

2. การอ่านไฟล์ config.ini ด้วย configparser

ต่อไป คุณสามารถใช้ไลบรารี configparser ในการอ่านข้อมูลจากไฟล์นี้ในโปรแกรม Python ของคุณได้ โดยทำตามขั้นตอนดังนี้:

1. ติดตั้งไลบรารี configparser (หากยังไม่ได้ติดตั้ง):

pip install configparser

2. อ่านไฟล์ config.ini ในโค้ด Python:

import configparser

# สร้างตัวแปร config เพื่ออ่านไฟล์ config.ini
config = configparser.ConfigParser()

# อ่านไฟล์ config.ini
config.read('config.ini')

# อ่านค่าจากแต่ละ Section
app_name = config['DEFAULT']['app_name']
db_host = config['DATABASE']['host']
db_port = config['DATABASE']['port']
debug_mode = config.getboolean('SETTINGS', 'debug_mode')

# แสดงค่าที่อ่านได้
print(f"App Name: {app_name}")
print(f"Database Host: {db_host}")
print(f"Debug Mode: {debug_mode}")

3. การเขียนไฟล์ config.ini

คุณยังสามารถเขียนค่าลงในไฟล์ config.ini ด้วย configparser ได้ โดยใช้คำสั่งต่อไปนี้:

import configparser

# สร้างตัวแปร config
config = configparser.ConfigParser()

# เพิ่ม Section และ Key-Value
config['DEFAULT'] = {
'app_name': 'MyApplication',
'version': '1.0.0'
}


config['DATABASE'] = {
'host': 'localhost',
'port': '5432',
'user': 'myuser',
'password': 'mypassword',
'database': 'mydatabase'
}


config['SETTINGS'] = {
'debug_mode': 'True',
'log_file': 'app.log'
}


# เขียนข้อมูลลงในไฟล์ config.ini
with open('config.ini', 'w') as configfile:
config.write(configfile)

4. การแปลงประเภทข้อมูล

โดยค่าเริ่มต้น ทุกค่าที่อ่านมาจากไฟล์ .ini จะถูกเก็บเป็นสตริง (str) หากคุณต้องการใช้ข้อมูลในรูปแบบอื่นๆ เช่น int, float, หรือ boolean คุณต้องทำการแปลงเอง โดยสามารถใช้เมธอดต่อไปนี้:

  • getint(): แปลงค่าเป็น int
  • getfloat(): แปลงค่าเป็น float
  • getboolean(): แปลงค่าเป็น boolean

ตัวอย่าง:

db_port = config.getint('DATABASE', 'port')
debug_mode = config.getboolean('SETTINGS', 'debug_mode')

5. ข้อควรระวัง

  • Case Sensitivity: โดยค่าเริ่มต้น configparser จะไม่สนใจตัวพิมพ์เล็กใหญ่ ดังนั้น Host กับ host จะถือว่าเป็นคีย์เดียวกัน แต่คุณสามารถเปลี่ยนแปลงพฤติกรรมนี้ได้โดยตั้งค่าตัวเลือกที่ต้องการ
  • การจัดการค่าเริ่มต้น (DEFAULT Section): ค่าที่อยู่ใน [DEFAULT] จะถูกสืบทอดไปยังทุก Section อื่นๆ ถ้าหากใน Section นั้นๆ ไม่มีการระบุค่าไว้

สรุป

การใช้ไฟล์ config.ini ร่วมกับไลบรารี configparser เป็นวิธีที่ดีในการแยกการตั้งค่าหรือการกำหนดค่าต่างๆ ออกจากโค้ดของคุณ ช่วยให้โปรแกรมยืดหยุ่นและง่ายต่อการปรับเปลี่ยน

Scroll to Top