簡體   English   中英

Python包裝器將參數傳遞給bash

[英]Python wrapper to pass arguments to bash

我公司編寫了一個應用程序(一個用於創建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做到的,但是,我的實現是錯誤的。

使用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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM