मैंने अभी तर्क में एक व्यवहार देखा है जो मुझे परेशान करता है (अनुमान है कि मैंने पहले कभी फाइलों की गूंगा सूची के लिए इसका इस्तेमाल नहीं किया था):Argparse मुझे एक सूची में एक सूची क्यों देता है?
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('multi', action='append', nargs='+')
print(parser.parse_args())
यह मुझे आउटपुट देता है:
~$ ./testargs.py foo bar baz
Namespace(multi=[['foo', 'bar', 'baz']])
~$
मुझे उम्मीद थी multi
['foo', 'bar', 'baz']
होने के लिए, सूची में एक सूची नहीं है। जैसा कि है, मुझे प्रसंस्करण से पहले args.multi[0]
पकड़ना होगा, जो एक बड़ा सौदा नहीं है, लेकिन एक बदसूरत वार्ट की तरह लगता है, और मैं समझना चाहता हूं कि यह क्यों है।
क्या मैं add_argument
में कुछ मूर्खतापूर्ण कर रहा हूं, या यह सिर्फ एक अपरिहार्य quirk है?
हू, आप सही हैं। मुझे दस्तावेज़ों से गलत इंप्रेशन मिला। शायद मुझे देखना चाहिए कि क्या मैं कुछ चीजों पर बेहतर शब्द के साथ एक पैच भेज सकता हूं। :) धन्यवाद! –
हालांकि, ध्यान दें कि 'action =' append 'के बिना, विकल्प को कई बार निर्दिष्ट किया गया है, तो पिछले मानों को त्याग दिया जाएगा। जैसे 'argv = ['- foo', 'a', 'b', '--foo', 'c']' '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ foo ', nargs =' + ') '। –