मार्टिज़न का जवाब समझ में आता है, लेकिन यह कुछ महत्वपूर्ण याद आ रहा था जो दूसरों के लिए स्पष्ट लग सकता है लेकिन मेरे लिए यह पता लगाना कठिन था।
उस संस्करण में जहां आप argparse का उपयोग करते हैं, आपको मुख्य बॉडी में इस लाइन का होना आवश्यक है।
args = parser.parse_args(args)
आम तौर पर जब आप सिर्फ एक स्क्रिप्ट में अर्गपर्स का उपयोग कर रहे होते हैं, जिसे आप लिखते हैं
args = parser.parse_args()
और parse_args कमांड लाइन से तर्क ढूंढते हैं। लेकिन इस मामले में मुख्य फ़ंक्शन के पास कमांड लाइन के तर्कों तक पहुंच नहीं है, इसलिए आपको यह बताना होगा कि तर्क क्या हैं।
यहाँ एक उदाहरण है
import argparse
import sys
def x(x_center, y_center):
print "X center:", x_center
print "Y center:", y_center
def main(args):
parser = argparse.ArgumentParser(description="Do something.")
parser.add_argument("-x", "--xcenter", type=float, default= 2, required=False)
parser.add_argument("-y", "--ycenter", type=float, default= 4, required=False)
args = parser.parse_args(args)
x(args.xcenter, args.ycenter)
if __name__ == '__main__':
main(sys.argv[1:])
यह मानते हुए कि आपने mytest.py नाम दिया है इसे चलाने के लिए आप कमांड लाइन से इनमें से कोई भी कर सकते हैं
python ./mytest.py -x 8
python ./mytest.py -x 8 -y 2
python ./mytest.py
जो क्रमशः लौटता है
X center: 8.0
Y center: 4
या
X center: 8.0
Y center: 2.0
या
X center: 2
Y center: 4
या यदि आप एक और अजगर स्क्रिप्ट से भागना चाहते हैं तो आप कर सकते हैं
import mytest
mytest.main(["-x","7","-y","6"])
जो लौटता है
X center: 7.0
Y center: 6.0
myModule.main()
। अब तक तुमने क्या प्रयास किये हैं?