簡體   English   中英

Python:為什么重復 json.load 會導致錯誤

[英]Python: why does repeat of json.load cause error

 with open(LATEST_UPDATE_FULL_PATH) as JSON_FILE_UPDATE:
                    JSON_DATA_UPDATE = json.load(JSON_FILE_UPDATE)
                    JSON_DATA_UPDATE = json.load(JSON_FILE_UPDATE)

為什么兩次“加載”會導致以下結果? 這個文件有句柄嗎? 我找不到任何可以發布 JSON_FILE_UPDATE 的東西。

Traceback (most recent call last):
  File "PhthonScript", line 69, in <module>
    JSON_DATA_UPDATE = json.load(JSON_FILE_UPDATE)
  File "...\PythonByMiniconda3\lib\json\__init__.py", line 293, in load
    return loads(fp.read(),
  File "...\PythonByMiniconda3\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "...\PythonByMiniconda3\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "...\PythonByMiniconda3\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)

嘗試這個:

JSON_DATA_UPDATE = json.loads(JSON_FILE_UPDATE)

加載后,文件將轉換為 json。 無法將 json 轉換為 json。

另一種方式,這可能適用於 json 的字符串:

import ast

file = """{
  "students": [
    {
      "name": "Millie Brown",
      "active": False,
      "rollno": 11
    },
    {
      "name": "Sadie Sink",
      "active": True,
      "rollno": 10
    }
  ]
}"""

print(type(file))
dict = ast.literal_eval(file)
print(type(dict))

dict['students'][0]['name']  would be "Millie Brown"
dict['students'][1]['active']  would be True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM