เคล็ดลับการจัดการกับ Configuration File ใน Python

18-มี.ค.-20

คัมภีร์เทพ IT

บทความนี้คุณจะได้เรียนรู้ขั้นตอนพื้นฐานที่จำเป็นในการจัดการ Configuration Files ใน Python ในที่นี้จะมุ่งเน้นไปที่ Python Module ที่ชื่อว่า ConfigParser โดยในบทความนี้ จะมาบอกถึง เคล็ดลับการจัดการกับ Configuration File ใน Python

ก่อนอื่นเรามาทำความรู้จักกับ ConfigParser กันก่อน โดย ConfigParser เป็น “…Class ที่ใช้ภาษา Configuration พื้นฐานซึ่งมี Structure คล้ายกับสิ่งที่มีใน ini Files ของ Microsoft Windows คุณสามารถใช้มันเพื่อเขียน Python Program ซึ่ง End Users สามารถปรับแต่งเองได้อย่างง่ายดาย ตอนนี้เรามาดูเคล็ดลับการจัดการกับ Configuration File กันเลย

1. Setup

ConfigParser Module เป็นส่วนหนึ่งของ Python 3 Library และคุณควรมีติดเครื่องไว้ เมื่อคุณติดตั้ง Python 3 คุณสามารถ Import มันได้อย่างง่ายดาย โดยใช้ Code ดังต่อไปนี้:

หากคุณใช้ Python 2.6–3.5 คุณสามารถลองใช้คำสั่ง Import ดังต่อไปนี้:

นอกจากนั้น หากคุณต้องการเขียน Code ที่สามารถใช้งานได้กับทั้ง Python 2 และ 3 ก็สามารถใช้ Code ต่อไปนี้ได้:

2. File Format

คุณสามารถตั้งชื่อการ Configuration ตามความต้องการของคุณเอง แต่ขอแนะนำให้คุณเก็บ File ให้มีนามสกุลเป็น ini 

Configuration File ประกอบด้วย หนึ่งหรือหลาย Sections ที่มีสัญลักษณ์บ่งบอกด้วย วงเล็บเปิดและปิด Header [section_name] โดยแต่ละ Section จะมี Key-Value Entries ที่คั่นด้วยเครื่องหมาย = หรือ : ก็ได้ แต่ในบทความนี้จะขอใช้เครื่องหมาย = รวมทั้งยังสามารถมี Whitespaces ระหว่าง Key-Value Entries ได้ ในกรณีที่คุณต้องการใส่ Comment คุณสามารถใช้เครื่องหมาย # หรือ ; นำหน้า Comment 

เรามาดูตัวอย่างหนึ่ง ของ Configuration File กัน: 

จากตัวอย่าง เรามี 2 Sections ใน Configuration File และในแต่ละ Section มี Key-Value Entries ของตัวเอง คุณสามารถสร้าง Configuration File ของคุณเอง หรือสร้างมันผ่านการ Coding ก็ได้ ซึ่งเราจะมาเรียนรู้เพิ่มเติมกันในหัวข้อถัดไป

3. Basic API

สิ่งแรกที่เราต้องทำ ก็คือ การเตรียมพร้อม ConfigParser Object

Write

เราสามารถสร้าง Default Section ได้โดยการเริ่มต้น Section ด้วย Dictionary ดังในตัวอย่างนี้

  • default - ชื่อของ Section
  • “host” : “192.168.1.1” – คู่ของ Key-Value Entry ของ Config File

นอกจากนี้ คุณสามารถเริ่มต้นด้วย Empty Dictionary แล้วเพิ่มบรรทัดอื่น ๆ ในภายหลังได้ ซึ่งมันช่วยเพิ่มความยืดหยุ่นให้แก่เรามากขึ้น เรามาดูวิธีการทำ dev_database Section กัน

  • dev_database - ชื่อของ Section
  • port – Key ของ Entry
  • 22 - Value ของ Entry

เมื่อคุณทำเสร็จแล้ว คุณสามารถเริ่มต้นเขียน Content ลงใน Config File ได้

คุณควรจะสามารถเห็น test.ini File ที่ถูกสร้างขึ้นเมื่อคุณ Run Code

Read

เรามาลองอ่าน Configuration File ที่คุณเพิ่งสร้างขึ้นมา

คุณสามารถระบุ Sections ที่มีอยู่ใน Configuration File ด้วยการเรียกใช้ API ต่อไปนี้

ต่อไป เราสามารถกำหนดชื่อของ Database ได้

  • dev_database - ชื่อของ Section
  • name - Key ของ Entry

คุณควรจะได้รับ db_test เป็น Output ถ้าคุณต้องการรับ Key-Value Entries ทั้งหมดของ Section ก็สามารถลองใช้ Code ต่อไปนี้เพื่อ Print ค่าทั้งหมดลงใน default Section

Data Type

โดยค่าเริ่มต้นแล้ว Module จะทำการ Parse ข้อมูลเป็น String คุณจำเป็นต้อง Convert พวกมันด้วยตัวเอง หรือไม่ คุณก็สามารถใช้ Getter Method ได้

มี 3 Getter Method ที่คุณสามารถใช้สำหรับการ Convert:

  • getint
  • getboolean
  • getfloat

หรือคุณสามารถลองใช้วิธีอื่นดังข้างล่างนี้:

หากเราสังเกต จะพบว่า Parameter ตัวที่ 2 คือ Key ของ Entry และไม่ใช่ Fallback Result

Fallback

หากคุณต้องการได้ Fallback Result คุณสามารถ Define พวกมันได้ดังนี้:

prod_database จะถูก Return กลับไปเป็น Result ในกรณีที่ไม่พบ Database Key หรือไม่พบ Section

สรุป

เรามาสรุปสิ่งที่ได้เรียนรู้กัน ก่อนอื่นเราเริ่มต้นด้วยการ Setup โดยการเขียน Code ที่ Import เข้ามาเพียงไม่กี่บรรทัด ต่อไปเราสำรวจรายละเอียดของ Format ของ Configuration File ซึ่งประกอบด้วย Section และ Key-Value Entries รวมทั้งแนะนำให้เก็บเป็น File ที่มีนามสกุล ini

จากนั้น เราทดสอบ API พื้นฐานบางอย่างที่มีอยู่ใน Module ซึ่งรวมถึงการเขียน Configuration ไปยัง File และอ่าน Configuration File ที่มีอยู่ เรายังสามารถ Convert ข้อมูลเป็น Data Type ที่ต้องการโดยใช้ Getter Method อีกทั้ง Fallback Parameter สามารถถูกใช้ เพื่อที่จะให้ Fallback Response กลับมาในกรณีที่ไม่พบ Section หรือ Key

ที่มา:  https://medium.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด