मैं कमांड लाइन टूल (चलिए इसे 'एक्स' कहने का प्रयास कर रहा हूं) को किसी अन्य टूल को लपेटने की कोशिश कर रहा हूं (चलिए कॉल करें यह 'वाई')।Argparse: किसी भी वैकल्पिक तर्क (`-` या` --` से शुरू)
मैं कुछ मामलों विशेष रूप से संभाल, और अपने आप में से कुछ विकल्पों को जोड़ने, लेकिन मैं रीडायरेक्ट करने के लिए जो कुछ भी मैं उपकरण वाई को संभालने के लिए नहीं करना चाहती चाहते
अब तक मैं तर्क अनुप्रेषित करने में कामयाब रहे कि डॉन ' टी डैश के साथ आते हैं, उदाहरण के लिए X Y option1 option2 option3
बस Y option1 option2 option3
पर कॉल करेगा। मैं
यहाँ कोड (x.py) एक subparser Y
और एक तर्क any
इसे करने के लिए जोड़ कर ऐसा किया:
args = main_parser.parse_args()
if args.parser_name == 'y':
command_string = ' '.join(['y'] + sys.argv[2:])
os.system(command_string)
:
main_parser = argparse.ArgumentParser()
subparsers = main_parser.add_subparsers(dest="parser_name")
y_subparser = subparsers.add_parser('y')
y_options = y_subparser.add_argument('any', nargs='*')
तब मेरे हैंडलर कोड में
, मैं यह नहीं
जब मैं python x.py y asdf zxcv qwer
पर कॉल करता हूं तो यह काम करता है। x.py: error: unrecognized arguments: -option
मुझे लगता है कि सामान बस argparse साथ भी जटिल हो जाता है, तो मैं हमेशा sys.argv
का ही उपयोग कर सकते हैं, लेकिन अगर आप जानते हैं कि यह संभव होना, साझा करें
जब मैं python x.py y asdf zxcv qwer -option
फोन मैं त्रुटि मिलती है।
मैं भी Argparse कोड देख रहा हूं, जो थोड़ा घना है, और ऐसा लगता है कि ArgumentParser._parse_known_args
सब कुछ (300 लाइनें) करता है। लेकिन इससे पहले कि मैं गहराई से जाऊं, मैंने सोचा कि शायद कोई जानता है कि यह कैसे करें - यदि नहीं, तो मैं अपनी खोज यहां पोस्ट करूंगा यदि किसी और को भी एक ही समस्या है।
' '-' 'पार्सर कुछ भी है कि इस प्रकार के इलाज के लिए मजबूर करता तर्क, उदाहरण के लिए '' पायथन x.py y asdf zxcv qwer - -option'' – hpaulj