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