cmd मॉड्यूल में केवल एक क्लास होती है जिसे Cmd कहा जाता है। इसका उपयोग लाइन-ओरिएंटेड कमांड लाइन इंटरप्रेटर्स के लिए यूजर-डिफाइंड फ्रेमवर्क के लिए बेस क्लास के रूप में किया जाता है।
Cmd क्लास
इस क्लास या इसके सबक्लास का ऑब्जेक्ट लाइन-ओरिएंटेड इंटरप्रेटर फ्रेमवर्क प्रदान करता है। इस क्लास के महत्वपूर्ण मेथड्स जो सबक्लास द्वारा विरासत में मिलते हैं, नीचे सूचीबद्ध हैं।
cmdloop()
यह मेथड ऑब्जेक्ट को एक लूप में भेजता है, इनपुट स्वीकार करता है और उसी को क्लास में उपयुक्त कमांड हैंडलर मेथड में भेजता है।
जैसे ही लूप शुरू होता है, एक परिचयात्मक संदेश (cmdloop() मेथड के पैरामीटर के रूप में दिया गया) डिफ़ॉल्ट (cmd) प्रॉम्प्ट के साथ प्रदर्शित होगा जिसे prompt एट्रिब्यूट द्वारा कस्टमाइज़ किया जा सकता है।
इंटरप्रेटर ऑब्जेक्ट यूजर इनपुट को दो भागों में पहचानता है। पहला भाग 'do_' से प्रीफिक्स्ड क्लास में मेथड के रूप में माना जाता है और दूसरा भाग मेथड के पैरामीटर के रूप में। उदाहरण के लिए यदि यूजर 'hello Python' एंटर करता है, तो इंटरप्रेटर क्लास में do_hello() मेथड को 'Python' पैरामीटर के साथ एक्ज़ीक्यूट करने का प्रयास करता है। यदि उक्त मेथड परिभाषित है, तो यह एक्ज़ीक्यूट होगा, अन्यथा त्रुटि संदेश प्रदर्शित होगा।
Cmd के सबक्लास को do_help() मेथड विरासत में मिलता है। यूजर का इनपुट जैसे 'help hello' hello() मेथड में डॉकस्ट्रिंग लाएगा और इसे सहायता टेक्स्ट के रूप में प्रदर्शित करेगा, या यदि मौजूद है, तो help_hello() मेथड चलेगा।
निम्न उदाहरण लाइन-ओरिएंटेड इंटरप्रेटर फ्रेमवर्क के अनुप्रयोग को प्रदर्शित करता है। कोड पहले cmd मॉड्यूल इम्पोर्ट करता है और Cmd क्लास का सबक्लास परिभाषित करता है।
MathOps क्लास डॉकस्ट्रिंग टेक्स्ट के साथ add, sub, mul और div मेथड्स (सभी do_ कैरेक्टर्स से प्रीफिक्स्ड) को परिभाषित करती है।
MathOps क्लास का ऑब्जेक्ट घोषित किया जाता है और cmdloop() मेथड कॉल करके लूप में भेजा जाता है। जब यूजर प्रॉम्प्ट के सामने help टाइप करता है, तो सभी मेथड नाम प्रदर्शित होते हैं। जब help के साथ मेथड का नाम टाइप किया जाता है, तो संबंधित मेथड का डॉकस्ट्रिंग प्रदर्शित होता है। किसी भी मेथड को कॉल करने के लिए, उसका नाम, आवश्यक तर्क टाइप करें और एंटर दबाएं। मेथड का परिणाम प्रदर्शित होगा और प्रॉम्प्ट बार-बार वापस आएगा जब तक इसे रोकने के लिए ^D जारी नहीं किया जाता।
from cmd import Cmd
class MathOps(Cmd):
def do_add(self, args):
'''add two numbers'''
num = args.split()
print('addition:', int(num[0]) + int(num[1]))
def do_sub(self, args):
'''subtract two numbers'''
num = args.split()
print('subtraction:', int(num[0]) - int(num[1]))
def do_mul(self, args):
'''multiply two numbers'''
num = args.split()
print('multiplication:', int(num[0]) * int(num[1]))
def do_div(self, args):
'''perform division'''
num = args.split()
print('division:', int(num[0]) / int(num[1]))
def do_EOF(self, args):
return True
op = MathOps()
op.prompt = "->"
op.cmdloop("loop starts. Press ^D to exit")
उपरोक्त स्क्रिप्ट का नमूना रन नीचे दिखाया गया है:
loop starts. Press ^D to exit ->help Documented commands (type help): ======================================== add div help mul sub Undocumented commands: ====================== EOF ->help add add two numbers ->add 5 7 addition: 12 ->div 10 5 division: 2.0 ->