Bash

將 dict 列表作為 cmd python 的函式參數

  • February 2, 2021

我正在嘗試執行 gunicorn 伺服器,我必須在其中傳遞 dict 列表作為輸入。但是當我發送空字元串作為值時,它被刪除了。我的命令是

import subprocess
cmd = """gunicorn 'myapp:create([{key: ""}])' --worker-class gevent -w 1 --bind 127.0.0.1:8019"""
subprocess.call([cmd], shell=True)

在 myapp 裡面

#myapp.py
create(d_input):
   print(d_input)
   # OUT : [{key: }]

如您所見'',已消除,因此我無法解析列表和字典。有什麼辦法可以避免這種情況。

我也嘗試過傳遞輸入,例如[{key : 'Something'}]在這種情況下輸出是[{key : Something}]而我期望[{key : 'Something'}]的。任何建議都會有所幫助

我遇到了將列表轉換為 json 的相同問題,為我解決了這個問題。

import subprocess
cmd = """gunicorn 'myapp:create(json.dumps([{key: ""}]))' --worker-class gevent -w 1 --bind 127.0.0.1:8019"""
subprocess.call([cmd], shell=True)

看起來您不需要外殼。嘗試

cmd = ["gunicorn", 'myapp:create([{key: ""}])', "--worker-class", "gevent", "-w", "1", "--bind", "127.0.0.1:8019"]
subprocess.call(cmd, shell=False)

引用自:https://unix.stackexchange.com/questions/632111