Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python click模块生成的usage消息的末尾添加多个空行?_Python_Python Click - Fatal编程技术网

如何在Python click模块生成的usage消息的末尾添加多个空行?

如何在Python click模块生成的usage消息的末尾添加多个空行?,python,python-click,Python,Python Click,我有一个类似于的问题,但是我想在由生成的输出末尾的尾声中添加额外的空行 我有以下代码: EPILOG='\n' + '-' * 20 class SpecialEpilog(click.Group): def format_epilog(self, ctx, formatter): if self.epilog: formatter.write_paragraph() for line in self.epilo

我有一个类似于的问题,但是我想在由生成的输出末尾的尾声中添加额外的空行

我有以下代码:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
这将产生以下使用输出:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
我的问题:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
我想不出一个不需要可打印字符的方法。如果删除上面的破折号序列,将不再显示换行符(
\n
)。换句话说,上述用法适用于:

...
Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...
$ myprompt>

问题是,
单击
会进行优化,以删除帮助末尾的所有空行。该行为位于
click.Command.get\u help()
中,可以像以下那样被覆盖:

代码:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
测试代码:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
但我需要的只是空白,而不是结束语:

EPILOG='\n' + '-' * 20

 class SpecialEpilog(click.Group):
     def format_epilog(self, ctx, formatter):
         if self.epilog:
             formatter.write_paragraph()
             for line in self.epilog.split('\n'):
                 formatter.write_text(line)

 #------------------
 @click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
 def cli():
     """Wraps cloud.tenable.com Nessus API calls in useful ways

     \b
     The CLI provides access to these subcommands:
         - agent
         - os
         - vuln

     Each subcommand can perform useful API queries within their respective domain.
     """
     pass

 #------------------
 # main
 cli.add_command(os)
 cli.add_command(agent)
 cli.add_command(vuln)
Usage: nessus_query [OPTIONS] COMMAND [ARGS]...



  Wraps cloud.tenable.com Nessus API calls in useful ways

  The CLI provides access to these subcommands:
      - agent
      - os
      - vuln

  Each subcommand can perform useful API queries within their respective
  domain.

Options:
  --help  Show this message and exit.

Commands:
  agent  API calls focusing on assets' details - Works...
  os     API calls focusing on operating systems -...
  vuln   API calls focusing on vulnerabilities - Works...


--------------------
$ myprompt>
class SpecialEpilog(click.Group):

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()
import click

EPILOG = '\n\n'

class SpecialEpilog(click.Group):
    def format_epilog(self, ctx, formatter):
        if self.epilog:
            formatter.write_paragraph()
            for line in self.epilog.split('\n'):
                formatter.write_text(line)

    def get_help(self, ctx):
        """ standard get help, but without rstrip """
        formatter = ctx.make_formatter()
        self.format_help(ctx, formatter)
        return formatter.getvalue()

@click.group(cls=SpecialEpilog, epilog=EPILOG, invoke_without_command=True)
def cli():
    pass

@cli.command()
def os(*args, **kwargs):
    pass

@cli.command()
def agent(*args, **kwargs):
    pass

cli(['--help'])
如果您只需要一些空行,那么我们可以完全忽略尾声,只需修改
get\u help()
即可添加相同的内容,如:

class AddSomeBlanksToHelp(click.Group):

    def get_help(self, ctx):
        return super(AddSomeBlanksToHelp, self).get_help(ctx) + '\n\n'

@click.group(cls=AddSomeBlanksToHelp, invoke_without_command=True)

谢谢,第二件正是我想要的!