संभव है? संभवतः, लेकिन मैं इसकी सिफारिश नहीं करता। argparse
इस प्रकार के इनपुट को पार्स करने के लिए सबसे अच्छा टूल नहीं है, या इसके विपरीत, यह argparse
परिप्रेक्ष्य से एक खराब तर्क विनिर्देश है।
क्या आपने सोचा है कि usage
लाइन कैसा दिखना चाहिए? यह आपके उपयोगकर्ताओं को कैसे समझाएगा?
आप sys.argv
से सीधे इस काम को कैसे पार्स करेंगे? ऐसा लगता है कि आप 3 टुकड़े एकत्र कर पाया:
prog = sys.argv[0]
arg1 = sys.argv[1]
keys = sys.argv[2::2]
# maybe strip -- off each
values = sys.argv[3::2]
kvdict = {k:v for k, v in zip(keys, values)}
अन्य अतः सामान्य key:value
जोड़े के बारे में पूछ सवाल कर रहे हैं। चीजों की तरह:
--args key1:value1 key2:value2
यह और nargs='*'
से संभाला जा सकता है कि एक कार्रवाई key
द्वारा :
(या =
) और दुकानों बातों पर प्रत्येक इनपुट स्ट्रिंग विभाजित होता है।
आपकी आवश्यकता कम से कम argparse
उपयोग करने योग्य है क्योंकि इसे argv
में स्ट्रिंग के साथ तर्क झंडे मिलान करने के पूरे विचार को छोड़ना आवश्यक है। इसके लिए, कुछ सामान्य argparse
पार्सिंग को बंद करने की आवश्यकता है।
ऐसा लगता है कि मैं कुछ साल पहले एक ही बात का सुझाव दिया
Parse non-pre-defined argument
या उससे पहले
Using argparse to parse arguments of form "arg= val"
पहले जवाब में से इस्तेमाल किया 'parse_known_args' एक होगा, लेकिन उसके बाद के लिए पार्स करने की' sys.argv' शैली का इस्तेमाल 'अज्ञात'। मुझे उन झंडे को पार्सर में जोड़ने और फिर से विश्लेषण करने का आपका विचार पसंद है। हैकिश आवश्यकताओं को हैकिश समाधान की आवश्यकता है। :) – hpaulj