কম্পিউটার টিউটোরিয়াল

পাইথনে কনফিগারেশন ফাইল পার্সার (configparser)


পাইথনেরстан্ডার্ড লাইব্রেরির configparser` মডিউলটি কনফিগারেশন ফাইল পড়া ও লেখার ফাংশনালিটি সংজ্ঞায়িত করে, যা মাইক্রোসফট উইন্ডোজ ওএস দ্বারা ব্যবহৃত হয়। এই ফাইলগুলোর এক্সটেনশন সাধারণত `.INI`।

আইএনআই ফাইলটি সেকশন দিয়ে গঠিত, প্রতিটি সেকশন `[section]` হেডার দিয়ে শুরু হয়। স্কোয়ার ব্র্যাকেটের মধ্যে সেকশনের নাম থাকে। সেকশনের পর কী/ভ্যালু এন্ট্রি থাকে যা `=` বা `:` ক্যারেক্টার দ্বারা পৃথক করা হয়। এতে কমেন্টও থাকতে পারে, যা `#` বা `;` সিম্বল দিয়ে শুরু হয়। একটি নমুনা আইএনআই ফাইল নিচে দেখানো হলো:

[Settings]
# অতিরিক্ত ডিবাগিং ইনফো জন্য বিস্তারিত লগ সেট করুন
DetailedLog=1
RunStatus=1
StatusPort=6090
StatusRefresh=10
Archive=1
# MV_FTP লগ ফাইলের লোকেশন সেট করুন
LogFile=/opt/ecs/mvuser/MV_IPTel/log/MV_IPTel.log
Version=0.9 Build 4
ServerName=Unknown

[FTP]
# FTP সার্ভার সক্রিয় করুন
RunFTP=1
# FTP কন্ট্রোল পোর্ট সংজ্ঞায়িত করুন
FTPPort=21
# FTP ডেটা ডিরেক্টরির লোকেশন সেট করুন
FTPDir=/opt/ecs/mvuser/MV_IPTel/data/FTPdata
# অ্যাডমিন নাম সেট করুন
UserName=admin
# পাসওয়ার্ড সেট করুন
Password=admin

`configparser` মডিউলে `ConfigParser` ক্লাস আছে। এটি কনফিগারেশন ফাইলগুলোর তালিকা পার্স করার এবং পার্স করা ডেটাবেস পরিচালনার জন্য দায়ী।

`ConfigParser` অবজেক্ট নিচের স্টেটমেন্ট দিয়ে তৈরি করা হয়:

parser = configparser.ConfigParser()

এই ক্লাসে নিচের মেথডগুলো সংজ্ঞায়িত:

sections()সমস্ত কনফিগারেশন সেকশনের নাম রিটার্ন করে।
has_section()নির্দিষ্ট সেকশন আছে কিনা তা রিটার্ন করে।
has_option()নির্দিষ্ট সেকশনে নির্দিষ্ট অপশন আছে কিনা তা রিটার্ন করে।
options()নামনির্দিষ্ট সেকশনের জন্য কনফিগারেশন অপশনগুলোর তালিকা রিটার্ন করে।
read()নামনির্দিষ্ট কনফিগারেশন ফাইল পড়ে এবং পার্স করে।
read_file()ফাইল অবজেক্ট হিসেবে দেওয়া একটি কনফিগারেশন ফাইল পড়ে এবং পার্স করে।
read_string()দেওয়া স্ট্রিং থেকে কনফিগারেশন পড়ে।
read_dict()ডিকশনারি থেকে কনফিগারেশন পড়ে। কীগুলো সেকশনের নাম, ভ্যালুগুলো সেকশনে থাকা কী-ভ্যালু জোড়ার ডিকশনারি।
get()নামনির্দিষ্ট অপশনের জন্য স্ট্রিং ভ্যালু রিটার্ন করে।
getint()`get()`-এর মতো, কিন্তু ভ্যালুকে ইন্টিজারে কনভার্ট করে।
getfloat()`get()`-এর মতো, কিন্তু ভ্যালুকে ফ্লোটে কনভার্ট করে।
getboolean()`get()`-এর মতো, কিন্তু ভ্যালুকে বুলিয়ানতে কনভার্ট করে। `False` বা `True` রিটার্ন করে।
items()সেকশনে প্রতিটি অপশনের জন্য (নাম, ভ্যালু) টাপলের তালিকা রিটার্ন করে।
remove_section()নির্দিষ্ট ফাইল সেকশন এবং এর সব অপশন মুছে দেয়।
remove_option()নির্দিষ্ট সেকশন থেকে নির্দিষ্ট অপশন মুছে দেয়।
set()নির্দিষ্ট অপশন সেট করে।
write().ini ফরম্যাটে কনফিগারেশন স্টেট লিখে।

নিচের স্ক্রিপ্টটি `sampleconfig.ini` ফাইলটি পড়ে এবং পার্স করে:

import configparser
parser = configparser.ConfigParser()
parser.read('sampleconfig.ini')
for sect in parser.sections():
    print('Section:', sect)
    for k,v in parser.items(sect):
        print(' {} = {}'.format(k,v))
    print()

আউটপুট

Section: Settings
detailedlog = 1
runstatus = 1
statusport = 6090
statusrefresh = 10
archive = 1
logfile = /opt/ecs/mvuser/MV_IPTel/log/MV_IPTel.log
version = 0.9 Build 4
servername = Unknown

Section: FTP
runftp = 1
ftpport = 21
ftpdir = /opt/ecs/mvuser/MV_IPTel/data/FTPdata
username = admin
password = admin

`write()` মেথডটি কনফিগারেশন ফাইল তৈরি করতে ব্যবহৃত হয়। নিচের স্ক্রিপ্টটি পার্সার অবজেক্ট কনফিগার করে এবং `test.ini` ফাইলে লিখে:

import configparser
parser = configparser.ConfigParser()
parser.add_section('Manager')
parser.set('Manager', 'Name', 'Ashok Kulkarni')
parser.set('Manager', 'email', 'ashok@gmail.com')
parser.set('Manager', 'password', 'secret')
fp = open('test.ini', 'w')
parser.write(fp)
fp.close()
  1. পাইথনে ফাইল অবজেক্ট: ফাইল পড়া, লিখা এবং ম্যানেজমেন্টের সম্পূর্ণ গাইড

  2. পাইথনে জাঙ্ক ফাইল অর্গানাইজার: ফাইলগুলো স্বয়ংক্রিয়ভাবে ক্যাটাগরাইজ করুন

  3. পাইথন দিয়ে ওয়েবসাইট ব্লকার তৈরি করা

  4. পাইথনে জন্মদিন রিমাইন্ডার অ্যাপ্লিকেশন