【问题标题】:if else statement for input arguments of a function in pythonpython中函数输入参数的if else语句
【发布时间】: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


    【解决方案1】:

    调用.get()时可以指定默认,所以使用空字符串。

    f'LANGUAGE={params.get("lang", "")}'
    

    【讨论】:

    • 谢谢 这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2020-03-01
    • 2019-04-16
    • 2021-11-24
    相关资源
    最近更新 更多