Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环中的跳过错误-JSONDecodeError:预期值:第1行第1列(字符0)_Python_Json_Api_Loops_Error Handling - Fatal编程技术网

Python 循环中的跳过错误-JSONDecodeError:预期值:第1行第1列(字符0)

Python 循环中的跳过错误-JSONDecodeError:预期值:第1行第1列(字符0),python,json,api,loops,error-handling,Python,Json,Api,Loops,Error Handling,我正在运行一个API请求循环(每分钟30个请求)。数据以JSON格式返回,我将其转换为pandas数据库(我标识列并连接它们)。 有时,我会在我的一个请求上出现以下错误(自动)停止脚本的执行 有没有办法告诉Python跳过这个错误并继续循环 我不介意不接收和处理来自这一错误请求的数据 如果不是那么简单,是否至少有一种方法可以获取音频通知(嘟嘟声),以便我知道它并可以再次手动执行脚本 Traceback (most recent call last): File "Skript.py", li

我正在运行一个API请求循环(每分钟30个请求)。数据以JSON格式返回,我将其转换为pandas数据库(我标识列并连接它们)。 有时,我会在我的一个请求上出现以下错误(自动)停止脚本的执行

有没有办法告诉Python跳过这个错误并继续循环

我不介意不接收和处理来自这一错误请求的数据

如果不是那么简单,是否至少有一种方法可以获取音频通知(嘟嘟声),以便我知道它并可以再次手动执行脚本

Traceback (most recent call last):
  File "Skript.py", line 19, in <module>
    dfraw = pd.concat([pd.DataFrame({k: v}) for k, v in dataAPI.json().items() if k in columns], axis=1)
  File "C:\Users\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\site-packages\requests\models
.py", line 898, in json

  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.752.0_x64__qbz5n2kfra8p0\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

您需要一个try-except块,它将尝试您的代码,如果它中断,它将继续循环的下一次迭代

try:
    //your code
except:
    continue
或者,如果您希望它不执行任何操作而跳过该迭代,则可以使用
pass
而不是
continue

编辑:如果您试图进行列表理解,则try/except块是不可能的,您需要执行常规for循环来添加元素

编辑2:给定代码,您将把try-except块放入for循环中

import pandas as pd
from pathlib import Path
import time
import datetime
import requests

while True:
    start = time.process_time()
    starttime = time.time()
    try:

        list_of_underlyings = ['X','Y','Z',...]

        for i in list_of_underlyings:
            url = ("https:xyzxyz?symbol=" + i + "&resolution=1&count=50&format=json")
            dataAPI = requests.get(url)
            columns = {'c', 'h', 'l', 'o', 't' , 'v'}
            dfraw = pd.concat([pd.DataFrame({k: v}) for k, v in dataAPI.json().items() if k in columns], axis=1)
            df = dfraw.reindex(columns = ['o', 'h', 'l', 'c', 'v' , 't'])
    except JSONDecodeError:
        continue
    finally:
        time.sleep(60.0 - ((time.time() - starttime) % 60.0))

因此,您将尝试您的代码,如果您遇到格式不正确的东西,它将捕获它,然后最终在给定的时间内睡眠,无论您进入哪个区块。

请编辑您的原始帖子,以确保可读性,而不是在@Daveafter finally这里对其进行评论:我使用变量starttime。starttime不应该在try块之外定义吗?
import pandas as pd
from pathlib import Path
import time
import datetime
import requests

while True:
    start = time.process_time()
    starttime = time.time()
    try:

        list_of_underlyings = ['X','Y','Z',...]

        for i in list_of_underlyings:
            url = ("https:xyzxyz?symbol=" + i + "&resolution=1&count=50&format=json")
            dataAPI = requests.get(url)
            columns = {'c', 'h', 'l', 'o', 't' , 'v'}
            dfraw = pd.concat([pd.DataFrame({k: v}) for k, v in dataAPI.json().items() if k in columns], axis=1)
            df = dfraw.reindex(columns = ['o', 'h', 'l', 'c', 'v' , 't'])
    except JSONDecodeError:
        continue
    finally:
        time.sleep(60.0 - ((time.time() - starttime) % 60.0))