将参数传递给bash的Python包装器

2024-10-01 09:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我的公司编写了一个应用程序(一个创建CloudFormation模板的小应用程序),并将二进制文件传递给所有团队使用。你知道吗

为了使这一点自动化,我编写了一个Python脚本,它基本上将参数传递给Bash/Shell命令。这是一个包装器,所以我只是做这个,这样我可以迭代一堆配置文件,在AWS中创建CloudFormation堆栈。你知道吗

在壳牌,我愿意

cfapp cfn create -p Namespace=namespace -p Env=env -p Team=team -p Region=region --spec-file file://partner/foobar.yaml

我是用Python写的,但出现语法错误:

os.system("cfapp cfn create -p Pool=%s" % pool "-p Namespace=%s" % namespace "-p Env=%s" % env "-p Team=%s" % team "-r %s" % region "--spec-file file://partner/"+str(config)+".yaml") time.sleep(5)

我读到这是如何通过python实现的,不过,obv,我的实现是错误的。你知道吗


Tags: env应用程序partnercreatenamespaceregionteamfile
1条回答
网友
1楼 · 发布于 2024-10-01 09:19:09

改用subprocess

subprocess.check_call([
    "cfapp", "cfn", "create",
    "-p", "Namespace=%s" % namespace,
    "-p", "Env=%s" % env,
    "-p", "Team=%s" % team,
    "-p", "Region=region",
    " spec-file", spec_file,
])

就初始错误而言,字符串格式语法不正确:

>>> pool = "foo"
>>> namespace = "bar"
>>> "cfapp cfn create -p Pool=%s" % pool "-p Namespace=%s" % namespace
  File "<stdin>", line 1
    "cfapp cfn create -p Pool=%s" % pool "-p Namespace=%s" % namespace
                                                     ^
SyntaxError: invalid syntax
>>> "cfapp cfn create -p Pool=%s -p Namespace=%s" % (pool, namespace)
'cfapp cfn create -p Pool=foo -p Namespace=bar'

相关问题 更多 >