如何在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)
谢谢,第二件正是我想要的!