ในโปรเจกต์ต่าง ๆ ที่ต้องการตั้งค่าคอนฟิก เช่น การเชื่อมต่อกับฐานข้อมูล หรือการกำหนดค่าอื่น ๆ ที่ควรแยกออกจากโค้ดหลัก มักจะใช้ไฟล์ `.conf` หรือไฟล์คอนฟิกเพื่อจัดเก็บข้อมูลเหล่านี้ การโหลดค่าจากไฟล์ `.conf` ช่วยให้สามารถจัดการกับการตั้งค่าต่าง ๆ ได้ง่ายขึ้นและแยกออกจากโค้ดหลัก ทำให้การเปลี่ยนแปลงค่าไม่ต้องแก้ไขที่ตัวโปรแกรมโดยตรง แล้วยังสะดวกสบายต่อนักทดสอบ (tester) ที่อาจจะไม่คุ้นเคยกับโค้ดอีกด้วย
รูปแบบไฟล์ .conf
ไฟล์ `.conf` มักมีรูปแบบเหมือนไฟล์ text ทั่วไป และใช้รูปแบบการจัดเก็บที่เป็น key-value หรืออาจเป็นรูปแบบ sections เช่น
ตัวอย่างไฟล์ `settings.conf`:
ไฟล์ `.conf` ด้านบนแบ่งเป็น 2 sections คือ `[database]` และ `[app]` ซึ่งใช้ในการจัดเก็บข้อมูลการเชื่อมต่อฐานข้อมูลและการตั้งค่าแอปพลิเคชัน
การเขียนฟังก์ชันโหลดค่าจากไฟล์ `.conf` ใน Python
ใน Python สามารถใช้ไลบรารี `configparser` ในการอ่านไฟล์ `.conf` ที่มีรูปแบบเหมือนตัวอย่างข้างต้นได้
ขั้นตอนการโหลดค่าจากไฟล์ .conf
การโหลดค่าจากไฟล์ `.conf` ด้วยฟังก์ชันที่ใช้ไลบรารี `configparser` เป็นวิธีการที่สะดวกและยืดหยุ่นในการจัดการกับการตั้งค่าต่าง ๆ ในโปรแกรม Python ไฟล์คอนฟิกแยกข้อมูลที่เกี่ยวกับการตั้งค่าออกจากโค้ดหลัก ทำให้สามารถปรับแต่งหรือแก้ไขค่าได้ง่ายขึ้น และยังช่วยให้โปรแกรมสามารถทำงานได้ตามการตั้งค่าที่ผู้ใช้หรือผู้ดูแลระบบกำหนดหากเพื่อน ๆ สนใจสามารถดูการเขียน python เพิ่มเติมได้ที่บทเรียน Python หรือทำความรู้จัก Packages การสร้างและใช้งาน Packages ใน Python
อ้างอิง
https://www.mindphp.com/developer/tips-python/9884-retrieving-variable-data-from-a-config.html
https://www.askpython.com/python-modules/configparser-module
https://florian-dahlitz.de/articles/how-to-work-with-config-files-in-python
รูปแบบไฟล์ .conf
ไฟล์ `.conf` มักมีรูปแบบเหมือนไฟล์ text ทั่วไป และใช้รูปแบบการจัดเก็บที่เป็น key-value หรืออาจเป็นรูปแบบ sections เช่น
ตัวอย่างไฟล์ `settings.conf`:
โค้ด: เลือกทั้งหมด
[database]
host = localhost
port = 5432
user = admin
password = secret
dbname = testdb
[app]
debug = true
log_file = app.log
การเขียนฟังก์ชันโหลดค่าจากไฟล์ `.conf` ใน Python
ใน Python สามารถใช้ไลบรารี `configparser` ในการอ่านไฟล์ `.conf` ที่มีรูปแบบเหมือนตัวอย่างข้างต้นได้
ขั้นตอนการโหลดค่าจากไฟล์ .conf
- การติดตั้งไลบรารี `configparser`
Python มีไลบรารีนี้ในตัวอยู่แล้ว ไม่จำเป็นต้องติดตั้งเพิ่มเติม - การเขียนฟังก์ชันสำหรับโหลดไฟล์ `.conf`
เราจะสร้างฟังก์ชันเพื่ออ่านค่าจากไฟล์คอนฟิกและนำมาใช้งานในโปรแกรมของเราอธิบายโค้ดโค้ด: เลือกทั้งหมด
import configparser def load_config(file_path): # สร้างออบเจ็กต์ configparser config = configparser.ConfigParser() # โหลดไฟล์คอนฟิก config.read(file_path) # ตรวจสอบว่าไฟล์ถูกอ่านหรือไม่ if not config.sections(): raise FileNotFoundError(f"ไม่พบไฟล์คอนฟิกที่ {file_path}") return config # ตัวอย่างการใช้งาน config_file = 'settings.conf' config = load_config(config_file) # อ่านค่าจาก section [database] db_host = config.get('database', 'host') db_port = config.getint('database', 'port') # เปลี่ยนค่าเป็น int db_user = config.get('database', 'user') db_password = config.get('database', 'password') db_name = config.get('database', 'dbname') # อ่านค่าจาก section [app] debug_mode = config.getboolean('app', 'debug') # เปลี่ยนค่าเป็น boolean log_file = config.get('app', 'log_file') print(f"Database Host: {db_host}") print(f"Database Port: {db_port}") print(f"Debug Mode: {debug_mode}") print(f"Log File: {log_file}")
- `configparser.ConfigParser()`: สร้างออบเจ็กต์สำหรับอ่านไฟล์ `.conf`
- `config.read(file_path)`: โหลดไฟล์คอนฟิกจากพาธที่กำหนด
- `config.get(section, option)`: ใช้ในการอ่านค่าภายใน section และ option ที่ต้องการ เช่น `host` จาก section `database`
- `config.getint()`: แปลงค่าที่อ่านได้เป็น integer (ใช้กับตัวเลข)
- `config.getboolean()`: แปลงค่าที่อ่านได้เป็น boolean (ใช้กับค่าจริง/เท็จ เช่น `true` หรือ `false`)
- terminal
โค้ด: เลือกทั้งหมด
Database Host: localhost Database Port: 5432 Debug Mode: True Log File: app.log
- screenshot
การโหลดค่าจากไฟล์ `.conf` ด้วยฟังก์ชันที่ใช้ไลบรารี `configparser` เป็นวิธีการที่สะดวกและยืดหยุ่นในการจัดการกับการตั้งค่าต่าง ๆ ในโปรแกรม Python ไฟล์คอนฟิกแยกข้อมูลที่เกี่ยวกับการตั้งค่าออกจากโค้ดหลัก ทำให้สามารถปรับแต่งหรือแก้ไขค่าได้ง่ายขึ้น และยังช่วยให้โปรแกรมสามารถทำงานได้ตามการตั้งค่าที่ผู้ใช้หรือผู้ดูแลระบบกำหนดหากเพื่อน ๆ สนใจสามารถดูการเขียน python เพิ่มเติมได้ที่บทเรียน Python หรือทำความรู้จัก Packages การสร้างและใช้งาน Packages ใน Python
อ้างอิง
https://www.mindphp.com/developer/tips-python/9884-retrieving-variable-data-from-a-config.html
https://www.askpython.com/python-modules/configparser-module
https://florian-dahlitz.de/articles/how-to-work-with-config-files-in-python