【发布时间】:2023-01-07 02:28:44
【问题描述】:
我在 python 文件中运行我的 bash 脚本my_file.sh,如下所示:
import subprocess
def rest_api():
params = {
'query': 'indepedence day',
'formats': '["NEWSPAPER"]',
}
subprocess.call(['bash',
'my_file.sh',
f'QUERY={params.get("query")}',
f'DOC_TYPE={params.get("formats")}',
f'LANGUAGE={params.get("lang")}', # returns None!
])
if __name__ == '__main__':
rest_api()
subprocess.call 中的几个输入参数通常不存在于字典 params={} 中(这里我提供了 f'LANGUAGE={params.get("lang")}' 作为示例)。我在my_file.sh 中处理这种不可用性,以使用某些东西进行初始化,例如:
if [ -z "$LANGUAGE" ]; then LANGUAGE="${LANGUAGE:-[]}"; fi
我想要的是在 subprocess.call 函数中应用某种 if else 语句,逻辑如下:
如果 params.get("lang") 是 None,甚至不要将它作为输入发送到 bash 文件,例如,将其视为我从未为 my_file.sh 提供过这样的输入。
因此,我尝试像这样重写我的代码:
subprocess.call(['bash',
'my_file.sh',
f'QUERY={params.get("query")}',
f'DOC_TYPE={params.get("formats")}',
if params.get("lang"): f'LANGUAGE={params.get("lang")}', # syntax Error
])
这是错误的我得到以下invalid syntax error:
Traceback (most recent call last):
File "nationalbiblioteket_logs.py", line 13, in <module>
from url_scraping import *
File "/home/xenial/WS_Farid/DARIAH-FI/url_scraping.py", line 17, in <module>
from utils import *
File "/home/xenial/WS_Farid/DARIAH-FI/utils.py", line 53
if params.get("lang"): f'LANGUAGE={params.get("lang")}',
^
SyntaxError: invalid syntax
我对将 if else 语句应用于 python 函数的输入参数是否有错误的理解,或者是否有更简单或更清晰的方法?
干杯,
【问题讨论】:
标签: python function arguments parameter-passing