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

পাইথনে আর্গুমেন্ট পার্সিং (Argument Parsing)

প্রতিটি প্রোগ্রামিং ল্যাঙ্গুয়েজে স্ক্রিপ্ট তৈরি করে টার্মিনাল থেকে রান করা বা অন্য প্রোগ্রাম থেকে কল করা সম্ভব। এমন স্ক্রিপ্ট রান করার সময় আমাদের বয়ে থাকে স্ক্রিপ্টের ভিতরের বিভিন্ন ফাংশন এক্সিকিউট করার জন্য আর্গুমেন্ট পাস করা। এই নিবন্ধে আমরা পাইথন স্ক্রিপ্টে আর্গুমেন্ট পাস করার বিভিন্ন পদ্ধতি দেখব।

sys.argv ব্যবহার

বিল্ট-ইন sys.argv মডিউল স্ক্রিপ্টের সাথে পাস করা আর্গুমেন্টগুলো প্রসেস করতে পারে। ডিফল্টভাবে প্রথম আর্গুমেন্ট (sys.argv[0]) হলো ফাইলনাম। বাকি আর্গুমেন্টগুলো ১, ২, ৩... সূচকে থাকে। নিচের উদাহরণে একটি স্ক্রিপ্ট কীভাবে পাস করা আর্গুমেন্ট ব্যবহার করে তা দেখানো হয়েছে।

import sys
print(sys.argv[0])
print("Hello ", sys.argv[1], ", welcome!")

উপরোক্ত স্ক্রিপ্ট রান করার জন্য টার্মিনালে নিচের কমান্ড দিতে হয়। এখানে স্ক্রিপ্টের নাম args_demo.py এবং আর্গুমেন্ট হিসেবে Samantha পাস করা হয়েছে।

D:\Pythons\py3projects>python3 args_demo.py Samantha
args_demo.py
Hello Samantha welcome!

getopt ব্যবহার

এটি আরও ফ্লেক্সিবল একটি পদ্ধতি। এখানে আর্গুমেন্টের মান সংগ্রহ করে এরর হ্যান্ডলিং এবং এক্সেপশন সহ প্রসেস করা যায়। নিচের প্রোগ্রামে দুটি সংখ্যার গুণফল বের করার জন্য আর্গুমেন্ট নেওয়া হয়েছে এবং প্রথম আর্গুমেন্ট (ফাইলনেম) বাদ দেওয়া হয়েছে। এখানেও sys মডিউল ব্যবহার করা হয়েছে।

উদাহরণ

import getopt
import sys
# প্রথম আর্গুমেন্ট (ফাইলনেম) বাদ দেয়া
all_args = sys.argv[1:]
prod = 1
try:
    # আর্গুমেন্ট সংগ্রহ
    opts, arg = getopt.getopt(all_args, 'x:y:')
    # ঠিক দুটি অপশন থাকতে হবে
    if len(opts) != 2:
        print('usage: args_demo.py -x  -b ')
    else:
        # অপশন এবং ভ্যালু ওভার ইটারেট
        for opt, arg_val in opts:
            prod *= int(arg_val)
        print('Product of the two numbers is {}'.format(prod))
except getopt.GetoptError:
    print('usage: args_demo.py -a  -b ')
    sys.exit(2)

আউটপুট

D:\Pythons\py3projects >python3 args_demo.py -x 3 -y 12
Product of the two numbers is 36
# Next Run
D:\Pythons\py3projects >python3 args_demo.py
usage: args_demo.py -x  -b 

argparse ব্যবহার

আর্গুমেন্ট হ্যান্ডলিংয়ের জন্য এটি সবচেয়ে প্রিয় মডিউল কারণ এরর ও এক্সেপশন মডিউলটি স্বয়ংক্রিয়ভাবে হ্যান্ডেল করে, অতিরিক্ত কোড লাগে না। প্রতিটি আর্গুমেন্টের নাম, হেল্প টেক্সট, রিকোয়ার্ড ইত্যাদি উল্লেখ করতে হয়।

উদাহরণ

import argparse
# আর্গুমেন্ট পার্সার তৈরি
all_args = argparse.ArgumentParser()
# পার্সারে আর্গুমেন্ট যোগ
all_args.add_argument("-x", "--Value1", required=True, help="first Value")
all_args.add_argument("-y", "--Value2", required=True, help="second Value")
args = vars(all_args.parse_args())
# গুণফল বের করা
print("Product is {}".format(int(args['Value1']) * int(args['Value2'])))

আউটপুট

D:\Pythons\py3projects>python3 args_demo.py -x 3 -y 21
Product is 63
# Next Run
D:\Pythons\py3projects>python3 args_demo.py -x 3 -y
usage: args_demo.py [-h] -x VALUE1 -y VALUE2
args_demo.py: error: argument -y/--Value2: expected one argument
  1. পাইথনে XML পার্সিং: ElementTree API ব্যবহার করে XML পড়া, লিখা এবং মডিফাই করা

  2. পাইথনে ডিফল্ট আর্গামেন্ট (Default Arguments)

  3. পাইথন ফাংশনে ডিকশনারি আর্গামেন্ট হিসেবে পাস করা

  4. পাইথন ফাংশন আর্গামেন্ট হিসেবে ফাংশন পাস করা