簡體   English   中英

OSError:[Errno 63] JSON 文件(python)中的文件名太長

[英]OSError: [Errno 63] File name too long in JSON FILE (python)

我有這個錯誤 - OSError: [Errno 63] 文件名太長:

解決此問題的最佳方法是什么?

import requests
import json
import codecs

url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json'
response = requests.get(url)

text = response.text

data = json.load(codecs.open(text, encoding='utf8'))

print('data', data)

您可以省略前 3 個字節,它們表示 BOM:

import requests
import json

url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json'
response = requests.get(url)

text = response.content[3:]
data = json.loads(text)
print(data)

更動態地查找正確的 BOM 並刪除數據:

BOMS = [
    codecs.BOM,
    codecs.BOM_BE,
    codecs.BOM_LE,
    codecs.BOM_UTF8,
    codecs.BOM_UTF16,
    codecs.BOM_UTF16_BE,
    codecs.BOM_UTF16_LE,
    codecs.BOM_UTF32,
    codecs.BOM_UTF32_BE,
    codecs.BOM_UTF32_LE,
]

url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json'
response = requests.get(url)
data = response.content

for BOM in BOMS:
    if data.startswith(BOM):
        data = json.loads(data[len(BOM):])
        break
print(data)

出去:

{'FHRSEstablishment': {'Header': ...

codecs.open用於打開文件。 您使用了整個網站的 JSON 響應作為該文件名。 requests已經知道 JSON 並且您可以讓它為您解碼

import requests
import json
import codecs

url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json'
response = requests.get(url)
data = response.json()
print('data', data)

這比對來自這個特定 web 站點的 JSON 的編碼方式做出一些毫無根據的假設要好得多。

暫無
暫無

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

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