Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

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"]',
    }

    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()

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:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

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:

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
                        ])

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?

Cheers,

>Solution :

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

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

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading