Warm tip: This article is reproduced from serverfault.com, please click

python-有没有办法我可以返回数据并提供其他参数,python3 @click

(python - Is there a way I can return data and provide additional arguments, python3 @click)

发布于 2020-11-28 18:34:07

我正在组装一个Python3工具,该工具使我可以与AWS开发工具包进行交互并从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 <-这将返回实例列表

# app.py ec2 --update instance_id/all <-这将更新所有返回的ID或特定实例ID上的SSM代理。

我可以使它返回实​​例列表,但没有其他选项,或者我可以使它返回更新命令,但没有实例列表。

非常感谢,扎克

Questioner
Zak Hargreaves
Viewed
0
Andre.IDK 2020-11-29 06:43:18
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未定义,不确定该变量是否是有目的的,或者你只是忘记将其包括在问题中。