आर्गपर्स के साथ बूलियन मानों को पार्स करना
आर्गपर्स में, बूलियन कमांड-लाइन तर्कों को पार्स करना एक सामान्य कार्य है, लेकिन प्रयास करते समय एक सामान्य समस्या उत्पन्न होती है type=bool तर्क का उपयोग करके "--foo True" या "--foo False" जैसे मानों को पार्स करना। आश्चर्य की बात है, तर्क के रूप में एक खाली स्ट्रिंग का उपयोग करते समय भी (उदाहरण के लिए, "--foo " "), पार्स किया गया मान सत्य का मूल्यांकन करता है।
सही बूलियन पार्सिंग के लिए, argparse दो अनुशंसित दृष्टिकोण प्रदान करता है:
&&&]विहित दृष्टिकोण:
'--फ़ीचर' का उपयोग करें और '--नो-फ़ीचर' सिंटैक्स, मूल रूप से पाइथॉन 3.9 और इसके बाद के संस्करण में समर्थित:parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
नीचे पायथन संस्करणों में 3.9:parser.add_argument('--feature', action='store_true')
parser.add_argument('--no-feature', dest='feature', action='store_false')
parser.set_defaults(feature=True)
इस दृष्टिकोण के साथ, '--feature' की उपस्थिति मान को True पर सेट करती है, जबकि '--no-feature' इसे गलत पर सेट करती है। किसी भी तर्क की अनुपस्थिति सत्य पर डिफ़ॉल्ट होती है। , कस्टम प्रकार के रूपांतरण कार्यों को नियोजित किया जा सकता है। एक उदाहरण है ast.literal_eval:parser.add_argument('--arg', type=ast.literal_eval)वैकल्पिक रूप से, एक उपयोगकर्ता-परिभाषित फ़ंक्शन बनाया जा सकता है:
def true_or_false(arg): ua = str(arg).upper() यदि 'सत्य'.शुरू होता है (यूए): सच लौटें elif 'FALSE'.startswith(ua): विवरण झूठा है अन्य: argparse बढ़ाएँ.ArgumentTypeError('अमान्य बूलियन मान')अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3