تحليل القيم المنطقية باستخدام argparse
في argparse، يعد تحليل وسيطات سطر الأوامر المنطقية مهمة شائعة، ولكن ينشأ خطأ شائع عند المحاولة لتحليل قيم مثل "--foo True" أو "--foo False" باستخدام الوسيطة type=bool. من المثير للدهشة أنه حتى عند استخدام سلسلة فارغة كوسيطة (على سبيل المثال، "--foo " ")، يتم تقييم القيمة التي تم تحليلها إلى True.
للحصول على تحليل منطقي صحيح، يقدم argparse طريقتين موصى بهما:
المنهج الأساسي:
استخدم "--feature" و"--no-feature" بناء الجملة، مدعوم أصلاً بواسطة argparse في إصدار Python 3.9 والإصدارات الأحدث:
parser.add_argument('--feature', action=argparse.BooleanOptionalAction)
في إصدارات Python أدناه 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" إلى تعيينها إلى False. غياب أي من الوسيطتين الافتراضيتين هو True.الأسلوب الاختياري (باستخدام تحويل النوع):
إذا كان بناء الجملة "--argparser.add_argument("--arg", type=ast.literal_eval)
بدلاً من ذلك، يمكن إنشاء دالة معرفة من قبل المستخدم:def true_or_false(arg):
تعميم الوصول إلى الخدمات = str(arg).upper()
إذا كان "صحيح". يبدأ بـ (ua):
عودة صحيح
إليف "خطأ". يبدأ بـ (وا):
العودة كاذبة
آخر:
رفع argparse.ArgumentTypeError('قيمة منطقية غير صالحة')
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3