खोज…


परिचय

सटीक कमांड लाइन इंटरफ़ेस के साथ hg या svn में उप-क्षेत्र बनाने के लिए अलग-अलग तरीके और आउटपुट जैसा कि रिमार्क्स अनुभाग में दिखाया गया है।

पार्सिंग कमांड लाइन तर्क तर्कों के व्यापक विषय को शामिल करता है।

टिप्पणियों

सहायता संदेश में दिखाए गए कमांड लाइन इंटरफ़ेस के साथ hg या svn में उप-क्षेत्र बनाने के विभिन्न तरीके:

usage: sub <command>

commands:

  status -  show status
  list   -  print list

देशी तरीका (कोई पुस्तकालय नहीं)

"""
usage: sub <command>

commands:

  status -  show status
  list   -  print list
"""

import sys

def check():
    print("status")
    return 0

if sys.argv[1:] == ['status']:
    sys.exit(check())
elif sys.argv[1:] == ['list']:
    print("list")
else:
    print(__doc__.strip())

तर्कों के बिना आउटपुट:

usage: sub <command>

commands:

  status -  show status
  list   -  print list

पेशेवरों:

  • कोई डिप्स नहीं
  • हर कोई इसे पढ़ने में सक्षम होना चाहिए
  • मदद स्वरूपण पर पूर्ण नियंत्रण

अर्गपर्स (डिफ़ॉल्ट मदद सूत्रकार)

import argparse
import sys

def check():
    print("status")
    return 0

parser = argparse.ArgumentParser(prog="sub", add_help=False)
subparser = parser.add_subparsers(dest="cmd")

subparser.add_parser('status', help='show status')
subparser.add_parser('list', help='print list')

# hack to show help when no arguments supplied
if len(sys.argv) == 1:
    parser.print_help()
    sys.exit(0)

args = parser.parse_args()

if args.cmd == 'list':
    print('list')
elif args.cmd == 'status':
    sys.exit(check())

तर्कों के बिना आउटपुट:

usage: sub {status,list} ...

positional arguments:
  {status,list}
    status       show status
    list         print list

पेशेवरों:

  • अजगर के साथ आता है
  • विकल्प पार्सिंग शामिल है

argparse (कस्टम सहायता फ़ॉर्मेटर)

विस्तारित संस्करण http://www.riptutorial.com/python/example/25282/argparse--default-help-formatter- जो निश्चित मदद आउटपुट है।

import argparse
import sys

class CustomHelpFormatter(argparse.HelpFormatter):
    def _format_action(self, action):
        if type(action) == argparse._SubParsersAction:
            # inject new class variable for subcommand formatting
            subactions = action._get_subactions()
            invocations = [self._format_action_invocation(a) for a in subactions]
            self._subcommand_max_length = max(len(i) for i in invocations)

        if type(action) == argparse._SubParsersAction._ChoicesPseudoAction:
            # format subcommand help line
            subcommand = self._format_action_invocation(action) # type: str
            width = self._subcommand_max_length
            help_text = ""
            if action.help:
                help_text = self._expand_help(action)
            return "  {:{width}} -  {}\n".format(subcommand, help_text, width=width)

        elif type(action) == argparse._SubParsersAction:
            # process subcommand help section
            msg = '\n'
            for subaction in action._get_subactions():
                msg += self._format_action(subaction)
            return msg
        else:
            return super(CustomHelpFormatter, self)._format_action(action)


def check():
    print("status")
    return 0

parser = argparse.ArgumentParser(usage="sub <command>", add_help=False,
             formatter_class=CustomHelpFormatter)

subparser = parser.add_subparsers(dest="cmd")
subparser.add_parser('status', help='show status')
subparser.add_parser('list', help='print list')

# custom help messge
parser._positionals.title = "commands"

# hack to show help when no arguments supplied
if len(sys.argv) == 1:
    parser.print_help()
    sys.exit(0)

args = parser.parse_args()

if args.cmd == 'list':
    print('list')
elif args.cmd == 'status':
    sys.exit(check())

तर्कों के बिना आउटपुट:

usage: sub <command>

commands:

  status -  show status
  list   -  print list


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow