การใช้ไฟล์ 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(): แปลงค่าเป็นintgetfloat(): แปลงค่าเป็นfloatgetboolean(): แปลงค่าเป็น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 เป็นวิธีที่ดีในการแยกการตั้งค่าหรือการกำหนดค่าต่างๆ ออกจากโค้ดของคุณ ช่วยให้โปรแกรมยืดหยุ่นและง่ายต่อการปรับเปลี่ยน