মোড়ক ক্লাস
এটিই সবচেয়ে নির্ভরযোগ্য এবং ডিআরওয়াই পদ্ধতি যা আমি এখনও পর্যন্ত উভয় ডিফল্ট দেখাতে এবং argparse.RawTextHelpFormatter
একই সাথে অন্য ফরম্যাটার ব্যবহার করতে পেলাম :
#!/usr/bin/env python3
import argparse
class ArgumentParserWithDefaults(argparse.ArgumentParser):
def add_argument(self, *args, help=None, default=None, **kwargs):
if help is not None:
kwargs['help'] = help
if default is not None and args[0] != '-h':
kwargs['default'] = default
if help is not None:
kwargs['help'] += ' Default: {}'.format(default)
super().add_argument(*args, **kwargs)
parser = ArgumentParserWithDefaults(
formatter_class=argparse.RawTextHelpFormatter
)
parser.add_argument('-a', default=13, help='''my help
for a''')
parser.add_argument('-b', default=42, help='''my help
for b''')
parser.add_argument('--no-default', help='''my help
for no-default''')
parser.add_argument('--no-help', default=101)
parser.print_help()
print()
print(parser.parse_args())
আউটপুট:
usage: main.py [-h] [-a A] [-b B] [--no-default NO_DEFAULT]
[--no-help NO_HELP]
optional arguments:
-h, --help show this help message and exit
-a A my help
for a Default: 13
-b B my help
for b Default: 42
--no-default NO_DEFAULT
my help
for no-default
--no-help NO_HELP
Namespace(a=13, b=42, no_default=None, no_help=101)
ArgumentDefaultsHelpFormatter
+ + RawTextHelpFormatter
একাধিক উত্তরাধিকার
একাধিক উত্তরাধিকার কেবলমাত্র কাজ করে তবে এটি সর্বজনীন এপিআই বলে মনে হয় না:
#!/usr/bin/env python3
import argparse
class RawTextArgumentDefaultsHelpFormatter(
argparse.ArgumentDefaultsHelpFormatter,
argparse.RawTextHelpFormatter
):
pass
parser = argparse.ArgumentParser(
formatter_class=RawTextArgumentDefaultsHelpFormatter
)
parser.add_argument('-a', default=13, help='''my help
for a''')
parser.add_argument('-b', default=42, help='''my help
for b''')
parser.print_help()
আউটপুট:
usage: a.py [-h] [-a A] [-b B]
optional arguments:
-h, --help show this help message and exit
-a A my help
for a (default: 13)
-b B my help
for b (default: 42)
এটি কেবলমাত্র কাজ করে কারণ আমরা সূত্র থেকে তুচ্ছভাবে দেখতে পাচ্ছি https://github.com/python/cpython/blob/v3.6.5/Lib/argparse.py#L648 যে:
RawTextHelpFormatter
সরঁজাম _split_lines
ArgumentDefaultsHelpFormatter
সরঁজাম _get_help_string
সুতরাং আমরা অনুমান করতে পারি যে তারা একসাথে ঠিক কাজ করবে।
তবে এটি সর্বজনীন এপিআই বলে মনে হয় না এবং এর পদ্ধতিগুলিও formatter_class
নয়, সুতরাং বর্তমানে এটি করার কোনও পাবলিক এপিআই উপায় আছে বলে আমি মনে করি না। argparse
ডকস্ট্রিং বলেছেন:
এই মডিউলের অন্যান্য সমস্ত শ্রেণী প্রয়োগের বিবরণ হিসাবে বিবেচিত হয়। (এছাড়াও নোট করুন যে হেল্পফর্ম্যাটরটার এবং রডেস্ক্রিপশন হেল্পফর্ম্যাটরটি কেবলমাত্র সামগ্রীর নাম হিসাবে সর্বজনীন হিসাবে বিবেচিত হয় - ফর্ম্যাটর অবজেক্টগুলির এপিআই এখনও একটি প্রয়োগের বিশদ হিসাবে বিবেচিত হয়))
আরও দেখুন: আরগপার্স সহায়তা বার্তাটি কাস্টমাইজ করুন
পাইথন 3.6.5 এ পরীক্ষা করা হয়েছে।