কমান্ড লাইন থেকে এক্সিকিউট করার সময় আমাদের প্রায়ই পাইথন স্ক্রিপ্টে আর্গুমেন্ট পাঠাতে হয়। যাইহোক, স্ক্রিপ্ট ব্যতিক্রম উত্থাপন করে যখন প্রয়োজনীয় পরামিতিগুলি সমান সংখ্যা বা প্রকার বা ক্রমে প্রদান করা হয় না। সেখানেই কমান্ড লাইন আর্গুমেন্ট সঠিকভাবে পার্স করার প্রয়োজন হয়।
আর্গপার্স মডিউল কমান্ড লাইন ইন্টারফেস ব্যবহার করা খুব সহজ লেখার জন্য সরঞ্জাম প্রদান করে। এটি sys.argv তালিকায় সংগৃহীত আর্গুমেন্টগুলিকে কীভাবে পার্স করতে হয় তা পরিচালনা করে, স্বয়ংক্রিয়ভাবে সহায়তা তৈরি করে এবং ভুল বিকল্পগুলি দেওয়া হলে ত্রুটি বার্তা ইস্যু করে৷
কমান্ড লাইন ইন্টারফেস ডিসিং করার প্রথম ধাপ হল পার্সার অবজেক্ট সেট আপ করা। এটি ArgumentParser() দ্বারা করা হয়েছে আর্গপার্স মডিউলে ফাংশন। ফাংশনটিকে বর্ণনার প্যারামিটার হিসাবে একটি ব্যাখ্যামূলক স্ট্রিং দেওয়া যেতে পারে।
আমাদের স্ক্রিপ্ট দিয়ে শুরু করার জন্য কোন আর্গুমেন্ট ছাড়াই কমান্ড লাইন থেকে কার্যকর করা হবে। এখনও পার্স_আর্গস() ব্যবহার করুন পার্সার অবজেক্টের পদ্ধতি, যা কিছুই করে না কারণ সেখানে কোনো আর্গুমেন্ট দেওয়া নেই।
import argparse parser = argparse.ArgumentParser(description="sample argument parser") args=parser.parse_args()
যখন উপরের স্ক্রিপ্ট চালানো হয়
C:\python36>python argparser1.py C:\python36>python argparser1.py --help usage: argparser1.py [-h] sample argument parser optional arguments: -h, --help show this help message and exit
দ্বিতীয় কমান্ড লাইন ব্যবহার -help বিকল্প দেয় যা দেখানো হিসাবে একটি সাহায্য বার্তা তৈরি করে। -help প্যারামিটার ডিফল্টরূপে উপলব্ধ।
এখন আসুন আমরা একটি আর্গুমেন্ট সংজ্ঞায়িত করি যা স্ক্রিপ্ট চালানোর জন্য বাধ্যতামূলক এবং যদি স্ক্রিপ্ট না দেওয়া হয় তবে এরর থ্রো করা উচিত। এখানে আমরা add_argument() দ্বারা আর্গুমেন্ট 'ব্যবহারকারী' সংজ্ঞায়িত করি পদ্ধতি।
import argparse parser=argparse.ArgumentParser(description="sample argument parser") parser.add_argument("user") args = parser.parse_args() if args.user=="Admin": print ("Hello Admin") else: print ("Hello Guest")
এই স্ক্রিপ্টের সাহায্য এখন 'ব্যবহারকারী' আকারে একটি অবস্থানগত যুক্তি দেখায়। প্রোগ্রামটি এর মান 'অ্যাডমিন' কিনা তা পরীক্ষা করে এবং সংশ্লিষ্ট বার্তা প্রিন্ট করে।
C:\python36>python argparser1.py --help usage: argparser1.py [-h] user sample argument parser positional arguments: user optional arguments: -h, --help show this help message and exit C:\python36>python argparser1.py Admin Hello Admin C:\python36>python argparser1.py temp Hello Guest
আমরা ডিফল্ট বরাদ্দ করতে পারি add_argument() পদ্ধতিতে একটি আর্গুমেন্টের মান।
import argparse parser=argparse.ArgumentParser(description="sample argument parser") parser.add_argument("user", nargs='?',default="Admin") args=parser.parse_args() if args.user=="Admin": print ("Hello Admin") else: print ("Hello Guest")
এখানে নারগস কমান্ড-লাইন আর্গুমেন্টের সংখ্যা যা ব্যবহার করা উচিত। '?' সম্ভব হলে কমান্ড লাইন থেকে একটি যুক্তি ব্যবহার করা হবে এবং একটি একক আইটেম হিসাবে উত্পাদিত হবে। কোনো কমান্ড-লাইন আর্গুমেন্ট না থাকলে, ডিফল্ট থেকে মান উত্পাদিত হবে।
C:\python36>python argparser1.py Hello Admin C:\python36>python argparser1.py Admin Hello Admin C:\python36>python argparser1.py test Hello Guest
ডিফল্টরূপে, সমস্ত আর্গুমেন্ট স্ট্রিং হিসাবে গণ্য করা হয়। স্পষ্টভাবে টাইপ উল্লেখ করতে যুক্তির, add_argument() পদ্ধতিতে টাইপ প্যারামিটার ব্যবহার করুন। সমস্ত পাইথন ডেটা টাইপের বৈধ মান।
import argparse parser=argparse.ArgumentParser(description="add numbers") parser.add_argument("first", type=int) parser.add_argument("second", type=int) args = parser.parse_args() x = args.first y = args.second z = x+y print ('addition of {} and {} = {}'.format(x,y,z)) C:\python36>python argparser2.py 2 3 addition of 2 and 3 = 5
উপরের উদাহরণগুলিতে, যুক্তিগুলি বাধ্যতামূলক। ঐচ্ছিক যুক্তি যোগ করতে, ডাবল ড্যাশ দ্বারা এর নাম উপসর্গ করুন -- নিম্নলিখিত ক্ষেত্রে উপাধি আর্গুমেন্ট ঐচ্ছিক কারণ এটি ডাবল ড্যাশ (--সারনেম) দ্বারা উপসর্গযুক্ত হয়
import argparse parser = argparse.ArgumentParser() parser.add_argument("name") parser.add_argument("--surname") args = parser.parse_args() print ("My name is ", args.name, end=' ') if args.surname: print (args.surname)
একক ড্যাশ দ্বারা উপসর্গযুক্ত আর্গুমেন্টের একটি অক্ষর নাম একটি সংক্ষিপ্ত নামের বিকল্প হিসাবে কাজ করে।
C:\python36>python argparser3.py Malhar My name is Malhar C:\python36>python argparser3.py Malhar --surname Lathkar My name is Malhar Lathkar parser.add_argument("-s","--surname")
যদি এটি আকাঙ্ক্ষিত হয় যে একটি আর্গুমেন্ট শুধুমাত্র একটি সংজ্ঞায়িত তালিকা থেকে মূল্যবান হওয়া উচিত, এটি পছন্দের প্যারামিটার হিসাবে সংজ্ঞায়িত করা হয়৷
import argparse parser = argparse.ArgumentParser() parser.add_argument("sub", choices=['Physics', 'Maths', 'Biology']) args=parser.parse_args() print ("My subject is ", args.sub)
মনে রাখবেন যে প্যারামিটারের মান তালিকা থেকে না থাকলে, অবৈধ পছন্দ ত্রুটি প্রদর্শিত হবে।
C:\python36>python argparser4.py Physics My subject is Physics C:\python36>python argparser4.py English usage: argparser4.py [-h] {Physics,Maths,Biology} argparser4.py: error: argument sub: invalid choice: 'English' (choose from 'Physics', 'Maths', 'Biology')