遇到OSError: [Errno 63]文件名过长错误,求最佳解决方法
解决OSError: [Errno 63] File name too long 错误
问题根源
你错误地将请求返回的整个JSON文本内容传给了codecs.open()函数,而该函数的第一个参数要求传入文件路径/文件名,不是文件内容。超长的JSON文本被当作文件名处理,直接触发了系统的文件名长度限制,导致报错。
最佳解决方法
方法一:使用requests内置的JSON解析(最简洁)
requests库提供了直接解析JSON响应的方法,无需手动处理文本或文件:
import requests url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json' response = requests.get(url) data = response.json() # 直接解析返回的JSON数据 print('data', data)
方法二:将文本转为类文件对象(适合需要自定义编码处理的场景)
如果需要手动控制编码等细节,可以用io.StringIO把文本内容转换成类文件对象,再传给json.load():
import requests import json import io url = 'https://ratings.food.gov.uk/OpenDataFiles/FHRS314en-GB.json' response = requests.get(url) text = response.text data = json.load(io.StringIO(text)) # 将字符串转为类文件对象供json.load读取 print('data', data)
内容的提问来源于stack exchange,提问作者Code Ninja
相关产品推荐
相关产品推荐

