Python Если None, то проверить не None из других переменных - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь получить какое-то значение из пользовательского ввода в Python, используя get opts.

Я передаю Cid, Sid, время начала, время окончания

Моей программе нужны только Cid и Sid. По некоторым причинам, если Sid недоступен, у нас есть вызов API для получения значения, основанного на времени начала или окончания.

Так что, если у Sid нет None, проверьте, кто не является ни начальным, ни конечным временем. Затем используйте это значение, чтобы получить Sid из вызова API.

Я выполнил код для проверки Cid и Sid, но я застрял в написании logi c для

If Sid is none
then check starttime and endtime
Either one should have value.
then sid=API_CALL with starttime (or) endtime 

My Код:

import getopt
from sys import exit, argv

def main(input_args):
    sid = None
    cid = None
    starttime = None
    endtime = None

    try:
        optlist,  remaining = getopt.getopt(input_args[1:], "", ['sid=','cid=','starttime=','endtime='])
        print(optlist)
    except getopt.GetoptError as err:
        print str(err)
        exit()


    for arg,  value in optlist:
        if arg == "--cid":
            cid = value
        elif arg == "--sid":
            sid = value
        elif arg == "--starttime":
            starttime = value
        elif arg == "--endtime":
            endtime = value
        else:
            print "Unknown argument %s" % arg
    if (snapshotid is None):

        ### My logic should go there ###
        ### ### ### ### ### ### ### ####


if __name__ == "__main__":
    main(argv)

Ответы [ 2 ]

1 голос
/ 28 марта 2020

как насчет:

if snapshotid is None:
    api_call(starttime or endtime)

В этом случае, если snapshotid равно None, вызов API будет выполнен с starttime, если он не является логически ложным (Нет, Ложь, пустая строка и т. Д. c ..) или endtime (если starttime логически ложно) или None, если оба starttime и endtime логически ложны.

0 голосов
/ 28 марта 2020

Я прямо переведу ваш псевдокод:

if (snapshotid is None):

    ### My logic should go there ###
    ### ### ### ### ### ### ### ####

    if (starttime is None) and (endtime is None): raise Exception("Hmm")
    elif (starttime is not None) and (endtime is not None): raise Exception("Hmm2")
    elif starttime is None: sid=API_CALL(endtime)
    else: sid=API_CALL(starttime)

Это то, что вы ищете?

...