में बदल देता है मेरे पास एक पाइथन स्क्रिप्ट है जो दो उप-आदेश चलाती है जो एक ही विकल्प को स्वीकार करते हैं, --config
। मैं एक तीसरा सब-कमांड बनाना चाहता हूं जो अनुक्रमिक रूप से पहले दो उप-सामग्रियों को एक साथ चला सकता है।subcommands में विकल्पों के लिए argparse संघर्ष समाधानकर्ता स्थिति तर्क को स्थितित्मक तर्क
Argparse का उपयोग करके, मैंने प्रत्येक सब-कमांड के साथ-साथ एक तृतीय उप-पाठक के लिए एक उपपरक्षक बनाया है, जिसका माता-पिता दो उप-आदेश हैं। बस स्पष्ट करने के लिए:
subcommand1 = subparsers.add_parser('subcommand1')
subcommand1.add_argument('--config', help="The config")
subcommand2 = subparsers.add_parser('subcommand2')
subcommand2.add_argument('--config', help="The config")
wrappercommand = subparsers.add_parser('wrappercommand',
parents=[subcommand1, subcommand2],
conflict_handler='resolve')
जब मैं wrappercommand, या subcommand2 चलाता हूं तो सब कुछ काम करता है। हालांकि, आउटपुट के रूप में टूट जाता है subcommand1, इस के साथ:
$ run_command.py subcommand1 --config path_to_config.ini
usage: run_command.py subcommand1 config
optional arguments:
help show this help message and exit
config The config
ऐसा लगता है कि argparse एक स्थितीय एक ("config") में कोई कीवर्ड आर्ग ("--config") कर दिया गया है। क्या यह अपेक्षित व्यवहार है जब विवाद विकल्पों को तर्कसंगत द्वारा हल किया जाता है?
क्या आप पूर्ण पार्सिंग कोड पोस्ट कर सकते हैं? क्या तर्क 'सहायक' होना चाहिए? – Forge
यह एक टाइपो है - यह 'help = "कॉन्फ़िगर" होना चाहिए। – hpaulj