有没有办法可以 return 数据并提供额外的参数,python3 @click
Is there a way I can return data and provide additional arguments, python3 @click
我正在组装一个 Python3 工具,它允许我与 AWS SDK 交互并从 AWS 拉回某些信息,但我无法让它提供输出,并提供不同的基于选项的输出。解释代码可能有助于理解。
import boto3
import click
@click.group()
@click.option('--profile', default=None, help='Specify AWS Profile')
@click.option('--region', default=None, help='Specify AWS Region')
@click.pass_context
def cli(ctx, profile, region):
ctx.obj = Params(profile, region)
@cli.command(name='ec2')
@click.pass_obj
def ec2(ctx, update):
print("list_instances")
@ec2.command()
@click.pass_obj
def update_instances(ctx):
print("update instances")
if __name__ == '__main__':
cli()
理想情况下,我希望能够运行以下内容:
# app.py ec2
<-- 这将是 return 实例列表
# app.py ec2 --update instance_id/all
<-- 这将在所有 returned ID 或特定实例 ID 上更新 SSM 代理。
我可以在 return 实例列表中获取它,但没有其他选项,或者我可以在 return 更新命令中获取它,但没有实例列表。
非常感谢,
扎克
import boto3
import click
@click.group()
@click.option('--profile', default=None, help='Specify AWS Profile')
@click.option('--region', default=None, help='Specify AWS Region')
@click.pass_context
def cli(ctx, profile, region):
ctx.obj = Params(profile, region)
@cli.command(name='ec2')
@click.option('--update', default=None)
@click.pass_obj
def ec2(ctx, update):
if update is not None:
update_instances(ctx, update)
else:
print("list_instances")
def update_instances(ctx, update):
print("update instances")
if __name__ == '__main__':
cli()
请注意,在您的示例中,变量 Params
未定义,不确定它是否是故意的,或者您只是忘记将其包含在问题中。
我正在组装一个 Python3 工具,它允许我与 AWS SDK 交互并从 AWS 拉回某些信息,但我无法让它提供输出,并提供不同的基于选项的输出。解释代码可能有助于理解。
import boto3
import click
@click.group()
@click.option('--profile', default=None, help='Specify AWS Profile')
@click.option('--region', default=None, help='Specify AWS Region')
@click.pass_context
def cli(ctx, profile, region):
ctx.obj = Params(profile, region)
@cli.command(name='ec2')
@click.pass_obj
def ec2(ctx, update):
print("list_instances")
@ec2.command()
@click.pass_obj
def update_instances(ctx):
print("update instances")
if __name__ == '__main__':
cli()
理想情况下,我希望能够运行以下内容:
# app.py ec2
<-- 这将是 return 实例列表
# app.py ec2 --update instance_id/all
<-- 这将在所有 returned ID 或特定实例 ID 上更新 SSM 代理。
我可以在 return 实例列表中获取它,但没有其他选项,或者我可以在 return 更新命令中获取它,但没有实例列表。
非常感谢, 扎克
import boto3
import click
@click.group()
@click.option('--profile', default=None, help='Specify AWS Profile')
@click.option('--region', default=None, help='Specify AWS Region')
@click.pass_context
def cli(ctx, profile, region):
ctx.obj = Params(profile, region)
@cli.command(name='ec2')
@click.option('--update', default=None)
@click.pass_obj
def ec2(ctx, update):
if update is not None:
update_instances(ctx, update)
else:
print("list_instances")
def update_instances(ctx, update):
print("update instances")
if __name__ == '__main__':
cli()
请注意,在您的示例中,变量 Params
未定义,不确定它是否是故意的,或者您只是忘记将其包含在问题中。