تقنية

action="version" في argparse: هل يعيد تحليل --version نتيجة؟

عرض وخروج؛ argparse; action:version; --version,version:leaf; input:[--version]; stdout:leaf; SystemExit:0; stderr:empty
عرض.

فعل version يطبع نص الإصدار ثم يخرج هنا. [1] [2]

الخلاصة السريعة

لا؛ يطبع ثم يخرج هنا. [1] [2]

  • فعل version يطبع نص الإصدار ثم يخرج هنا. [1] [2]
  • على CPython 3.12.14، --version مع action="version" وversion="leaf"؛ محلل عادي. [1] [2]
  • تحليل ["--version"] يطبع leaf على stdout ثم يثير SystemExit بالرمز 0، دون إعادة مساحة أسماء هنا. [1] [2]
  • الفعل يرسل النص المنسق إلى stdout ثم يستدعي exit()؛ نلتقط الخروج لمتابعة المثال. [1] [2]
  • تحكم مستقل بـ --version بتخزين عادي، والمدخل العاري نفسه: SystemExit بالرمز 2، stdout فارغ وstderr غير فارغ. نفحص هذا الضبط، لا كل قالب إصدار أو نص الرسالة. [1] [2]

الخروج

فعل version يطبع نص الإصدار ثم يخرج هنا. [1] [2]

الضبط

على CPython 3.12.14، --version مع action="version" وversion="leaf"؛ محلل عادي. [1] [2]

عرض وخروج

تحليل ["--version"] يطبع leaf على stdout ثم يثير SystemExit بالرمز 0، دون إعادة مساحة أسماء هنا. [1] [2]

import argparse,contextlib,io own=argparse.ArgumentParser() own.add_argument("--version",action="version",version="leaf") out=io.StringIO();err=io.StringIO();returned=False try: with contextlib.redirect_stdout(out),contextlib.redirect_stderr(err): own.parse_args(["--version"]);returned=True except SystemExit as ex: print(ex.code,out.getvalue().strip(),not returned,err.getvalue()=="") [1] [2]

تحكم مستقل؛ argparse; action:store; --version; input:[--version]; stdout:empty; SystemExit:2; stderr:nonempty
خطأ.

قيمة مطلوبة

الفعل يرسل النص المنسق إلى stdout ثم يستدعي exit()؛ نلتقط الخروج لمتابعة المثال. [1] [2]

control=argparse.ArgumentParser() control.add_argument("--version") cout=io.StringIO();cerr=io.StringIO() try: with contextlib.redirect_stdout(cout),contextlib.redirect_stderr(cerr): control.parse_args(["--version"]) except SystemExit as ex: print(ex.code,bool(cerr.getvalue()),cout.getvalue()=="") [1] [2]

تحكم مستقل بـ --version بتخزين عادي، والمدخل العاري نفسه: SystemExit بالرمز 2، stdout فارغ وstderr غير فارغ. نفحص هذا الضبط، لا كل قالب إصدار أو نص الرسالة. [1] [2]

المراجع

  1. Python argparse
  2. CPython argparse

للتوسع: لغات البرمجة.

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.