Python-如果json.object为空,请重复该函数直到新值?

时间:2018-08-31 09:46:48

标签: python if-statement try-catch

因此,我一直在尝试寻找一种更漂亮的方式来在正在处理的脚本中实际执行一些错误和错误。

基本上我有一个json_resp = resp.json(),他要么给我值,要么[]代表有东西。

现在,我遇到的问题是,我不知道哪种方法最适合重复该函数(如果为空),我是否应该重复整个函数,否则还有什么是最“最佳理由”来解决的很好吗?

我所做的是将对象从json resp更改为len。如果其值为0,则重复其他操作:

#json_resp['objects'] either has empty [] or not always.

json_resp = resp.json()

        if len(json_resp['objects']) == 0:
            print('Sleeping in 2 sec')
            time.sleep(2)
            run_method() #Shall I call the function to start over?

        else:
            print(len(json_resp['objects']))
            continue do rest of the code

正如您现在所看到的,我将其与json_resp的len进行比较,但令我不确定的是,这是否是再次真正调用该函数的好方法?它不会有限制,还是可能会延迟整个过程……我不确定,但是您对使此功能“更好,更智能,更快”有何想法?

我的想法是要么尝试尝试,要么while循环?让我知道你们的想法

1 个答案:

答案 0 :(得分:0)

  1. Python列表有问题,因此您只能使用if json_resp:
  2. 您可以使用递归。只要确保您有地方可以休息

我想将您的代码修改为:

max_iteration = 5
current_iteration = 0
def run_method():
    current_iteration += 1
    # Do other stuff. Requests I guess?
    response = resp.json
    if response:
        # do something with the response
    else:
        if current_iteration == max_iteration:
           return 'Maximum iterations reached: {}'.format(max_iteration)

        timer = 2
        print('Sleeping in {} seconds'.format(timer))
        time.sleep(timer)
        run_method()