getopt मॉड्यूल यूनिक्स getopt() फंक्शन की तरह कमांड लाइन आर्गुमेंट्स पार्स करता है। यह sys.argv को प्रोसेस करने का पारंपरिक तरीका है (आधुनिक विकल्प: argparse)।
बेसिक: sys.argv एक्सेस
import sys
print('स्क्रिप्ट नाम:', sys.argv[0])
print('आर्गुमेंट्स:', sys.argv[1:])
चलाना:
$ python args.py 11 22 स्क्रिप्ट नाम: args.py आर्गुमेंट्स: ['11', '22']
getopt.getopt() फंक्शन
getopt.getopt(args, shortopts, longopts=[])
- args: आर्गुमेंट लिस्ट (
sys.argv[1:]) - shortopts: ऑप्शन अक्षरों की स्ट्रिंग, कोलन (
:) से आर्गुमेंट आवश्यक दर्शाता है - longopts: लॉन्ग ऑप्शन नामों की लिस्ट (बिना
--), बराबर चिह्न (=) से आर्गुमेंट आवश्यक
उदाहरण: इनपुट/आउटपुट फाइल ऑप्शन्स
import sys
import getopt
def main():
input_file = ''
output_file = ''
try:
# shortopts: h (नो आर्गुमेंट), i: (आर्गुमेंट आवश्यक), o: (आर्गुमेंट आवश्यक)
# longopts: ifile=, ofile= (आर्गुमेंट आवश्यक)
opts, args = getopt.getopt(sys.argv[1:], "hi:o:", ["ifile=", "ofile="])
except getopt.GetoptError as err:
print(f'त्रुटि: {err}')
print('उपयोग: test.py -i -o ')
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print('उपयोग: test.py -i -o ')
sys.exit()
elif opt in ("-i", "--ifile"):
input_file = arg
elif opt in ("-o", "--ofile"):
output_file = arg
print(f'इनपुट फाइल: {input_file}')
print(f'आउटपुट फाइल: {output_file}')
if __name__ == '__main__':
main()
चलाना और आउटपुट
$ python args.py -h उपयोग: test.py -i-o $ python args.py -i abc.txt -o xyz.txt इनपुट फाइल: abc.txt आउटपुट फाइल: xyz.txt $ python args.py --ifile=abc.txt --ofile=xyz.txt इनपुट फाइल: abc.txt आउटपुट फाइल: xyz.txt
रिटर्न वैल्यू संरचना
opts, args = getopt.getopt(...) # opts: [(option, value), ...] लिस्ट # option: '-x' (शॉर्ट) या '--long-option' (लॉन्ग) # value: आर्गुमेंट स्ट्रिंग या '' (यदि कोई आर्गुमेंट नहीं) # args: ऑप्शन स्ट्रिप होने के बाद बचे प्रोग्राम आर्गुमेंट्स
उन्नत उदाहरण: मल्टीपल ऑप्शन्स
import sys
import getopt
def main():
verbose = False
output = 'output.txt'
count = 1
files = []
try:
opts, args = getopt.getopt(sys.argv[1:],
"vho:c:",
["verbose", "help", "output=", "count=", "file="])
except getopt.GetoptError as err:
print(err)
sys.exit(2)
for opt, arg in opts:
if opt in ("-v", "--verbose"):
verbose = True
elif opt in ("-h", "--help"):
print_help()
sys.exit()
elif opt in ("-o", "--output"):
output = arg
elif opt in ("-c", "--count"):
count = int(arg)
elif opt == "--file":
files.append(arg)
# शेष आर्गुमेंट्स भी फाइल्स मानें
files.extend(args)
print(f"Verbose: {verbose}")
print(f"Output: {output}")
print(f"Count: {count}")
print(f"Files: {files}")
def print_help():
print("""
उपयोग: script.py [विकल्प] [फाइल्स...]
विकल्प:
-v, --verbose वर्बोज मोड
-h, --help यह मदद दिखाएं
-o, --output FILE आउटपुट फाइल
-c, --count N काउंट मान
--file FILE इनपुट फाइल (मल्टीपल अनुमत)
""")
if __name__ == '__main__':
main()
argparse से तुलना (आधुनिक, अनुशंसित)
import argparse
parser = argparse.ArgumentParser(description='फाइल प्रोसेसिंग टूल')
parser.add_argument('-i', '--input', required=True, help='इनपुट फाइल')
parser.add_argument('-o', '--output', help='आउटपुट फाइल')
parser.add_argument('-v', '--verbose', action='store_true', help='वर्बोज मोड')
parser.add_argument('files', nargs='*', help='अतिरिक्त फाइल्स')
args = parser.parse_args()
print(args.input, args.output, args.verbose, args.files)
कौन सा चुनें?
| विशेषता | getopt | argparse |
|---|---|---|
| सीखने में आसानी | सरल | थोड़ा जटिल |
| पावर/फ्लेक्सिबिलिटी | सीमित | बहुत शक्तिशाली |
| ऑटो हेल्प जनरेशन | नहीं | हाँ |
| टाइप वैलिडेशन | मैनुअल | बिल्ट-इन |
| सबकमांड्स | नहीं | हाँ |
| पायथन संस्करण | सभी | 2.7+/3.2+ |
सिफारिश: नए प्रोजेक्ट्स के लिए argparse उपयोग करें। getopt केवल लीगेसी कोड या सरल स्क्रिप्ट्स के लिए।