if else statement for input arguments of a function in python


I run my bash script my_file.sh in a python file as follows:

import subprocess

def rest_api():

    params = {
        'query': 'indepedence day',
        'formats': '["NEWSPAPER"]',

                     f'LANGUAGE={params.get("lang")}', # returns None!

if __name__ == '__main__':

Several of my input arguments in subprocess.call do not normally exist in a dictionary params={} (here I provided f'LANGUAGE={params.get("lang")}' as one example). I handle such unavailability in my_file.sh to initialize with something, for instance:

if [ -z "$LANGUAGE" ]; then LANGUAGE="${LANGUAGE:-[]}"; fi

What I want is to apply some sort of if else statement in subprocess.call function with this logic:

if params.get("lang") is None, do not even send it as an input to bash file, e.g., treat it as I never provided such input for my_file.sh.

Therefore, I tried to rewrote my code like this:

                         if params.get("lang"): f'LANGUAGE={params.get("lang")}', # syntax Error

which is wrong I get the following 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

Do I have a wrong understanding of applying if else statement for the input arguments of a python function or is there an easier or cleaner way doing it?


>Solution :

You can specify the default when calling .get(), so use an empty string.

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

Leave a Reply Cancel reply