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

পাইথনে C-স্টাইল কমান্ড লাইন অপশন পারসার (C-style Parser for Command Line Options)

পাইথনের sys মডিউল sys.argv দিয়ে কমান্ড-লাইন আর্গুমেন্ট অ্যাক্সেস দেয়। sys.argv হল কমান্ড-লাইন আর্গুমেন্টের লিস্ট, যেখানে sys.argv[0] হল প্রোগ্রাম বা স্ক্রিপ্টের নাম।

নিচের কোড args.py হিসেবে সেভ করুন:

import sys 
print('argument list', sys.argv)

কমান্ড লাইন থেকে এক্সিকিউট করুন:

C:\python37>python args.py 11 22 
argument list ['args.py', '11', '22']

getopt মডিউলে sys.argv-এ থাকা কমান্ড লাইন আর্গুমেন্ট পার্স করার ফাংশন রয়েছে। এটি Unix getopt() ফাংশনের কনভেনশন সমর্থন করে (খাস করে '-' এবং '--' আর্গুমেন্টের 스페সিয়াল মিনিংসহ)।

API ডিজাইন করা হয়েছে C getopt() ফাংশনের ইউজারদের পরিচিত করার জন্য।

getopt(args, shortopts, longopts=[])

কমান্ড লাইন অপশন ও প্যারামিটার লিস্ট পার্স করে। args হল আর্গুমেন্ট লিস্ট বাদে sys.argv[0] (রানিং প্রোগ্রামের রেফারেন্স)। সাধারণত মানে sys.argv[1:]। ফাংশনের আর্গুমেন্ট:

  • shortopts: অপশন লেটারের স্ট্রিং যা স্ক্রিপ্ট রিকগনাইজ করবে। আর্গুমেন্ট প্রয়োজনীয় অপশনগুলোর পেছনে কলন (:) থাকে (Unix getopt()-এর মতো ফরম্যাট)।
  • longopts: যদি স্পেসিফাই করা হয়, তবে লং অপশন নামের স্ট্রিং লিস্ট হতে হবে। শুরুর '--' ক্যারেক্টারها অপশন নামে অন্তর্ভুক্ত নয়। আর্গুমেন্ট প্রয়োজনীয় লং অপশনগুলোর পেছনে ইকোয়াল সাইন (=) থাকে।

রিটার্ন ভ্যালু দুটি উপাদান: প্রথমে (option, value) পেয়ারের লিস্ট, দ্বিতীয়ে অপশন লিস্ট স্ট্রিপ করার পর প্রোগ্রাম আর্গুমেন্টের লিস্ট (args-এর ট্রেইলিং স্লাইস)। প্রতিটি অপশন-ভ্যালু পেয়ারের প্রথম উপাদান অপশন (শর্ট অপশনে হাইফেন প্রিফিক্স, লং অপশনে ডাবল হাইফেন), দ্বিতীয় উপাদান অপশন আর্গুমেন্ট (অপশনে আর্গুমেন্ট না থাকলে খালি স্ট্রিং)। অপশনগুলো একই অর্ডারে থাকে যাতে একাধিক অকুরেন্স হ্যান্ডেল করা যায়। লং ও শর্ট অপশন মিক্স করা যায়।

অপরিচিত অপশন পাওয়া গেলে বা আর্গুমেন্ট প্রয়োজনীয় অপশনে আর্গুমেন্ট না দিলে GetoptError উত্থাপিত হয়।

উদাহরণ

import sys, getopt 
args = sys.argv[1:] 
inputfile = '' 
outputfile = '' 
try: 
    opts, args = getopt.getopt(args, "hi:o:", ["ifile=", "ofile="]) 
except getopt.GetoptError: 
    print('test.py -i  -o ') 
    sys.exit(2) 
for opt, arg in opts: 
    if opt == '-h': 
        print('args.py -i  -o ') 
        sys.exit() 
    elif opt in ("-i", "--ifile"): 
        inputfile = arg 
    elif opt in ("-o", "--ofile"): 
        outputfile = arg 
print('Input file is "', inputfile) 
print('Output file is "', outputfile)

আউটপুট

C:\python37>python args.py -h 
args.py -i  -o  
C:\python37>python args.py -i abc.txt -o xyz.txt 
Input file is " abc.txt 
Output file is " xyz.txt 
C:\python37>python args.py --ifile=abc.txt --ofile=xyz.txt 
Input file is " abc.txt 
Output file is " xyz.txt
  1. Windows-এ MySQL কমান্ড লাইন ক্লায়েন্ট ইনস্টল করা

  2. Matplotlib-এ কার্ভড লাইনের জন্য টাইটেল যোগ করার পদ্ধতি

  3. কমান্ড লাইন মাধ্যমে Matplotlib-এ ইন্টারেক্টিভ প্লটিং

  4. টکইন্টার (Tkinter) বাটনের কমান্ড মেথড ডাইনামিকভাবে পরিবর্তন করা