开云手机站登录入口使用方法

4个月前 (04-20)

json.load()用于加载文件。 同题参见json.loads()与字符串一起使用。@H_404_5@

我正在尝试从json文件读取。

这是我创建文件的方式:

import requests
import json
import time
from pprint import pprint

BASE_URL = "https://www.wikiart.org/en/api/2/UpdatedArtists"
artist_json_data = requests.get(BASE_URL).json()

with open('artistdata.json','w') as outfile:
 while artist_json_data['hasMore']:
 print(artist_json_data['paginationToken'])
 url = BASE_URL + "?paginationToken=" +artist_json_data['paginationToken']
 artist_json_data = requests.get(url).json()
 json.dump(artist_json_data,outfile,indent=4)
 time.sleep(1)

这是我输出的开始:

{
 "data": [
 {
 "id": "57726da5edc2cb3880b4ca54","artistName": "Paul Feeley","url": "paul-feeley","lastNameFirst": "Feeley Paul","birthDay": "/Date(-1893456000000)/","deathDay": "/Date(-126230400000)/",

当我尝试使用以下代码读取同一文件时:

from pprint import pprint

with open('artistdata.json','r',encoding='utf-8') as data_file: 
 data = json.loads(data_file)
 pprint(data)

我得到错误

TypeError: the JSON object must be str,bytes or bytearray,not 'TextIOWrapper'

我不明白,因为我可以像往常一样崇高地打开文件。 对照阅读我该如何处理?

使用以下代码解决了该问题:

问题是我混合了转储和负载。现在我正在使用转储和加载

class Wikiart:
 '''Class to access wikiart.org Data'''
 def __init__(self):
 self.BASE_URL = "https://www.wikiart.org/en/"
 self.BASE_URL_API = self.BASE_URL + "api/2/"
 self.BASE_URL_MOVEMENT = self.BASE_URL + 'artists-by-art-movement/'
 self.ARTIST_DATA_URL = self.BASE_URL_API + "UpdatedArtists"

 def write_artist_data_into_json_file(self):
 artists = requests.get(ARTIST_DATA_URL).json()
 all_artists = artists['data']

 with open('artistdata.json','w') as outfile:
 while artists['hasMore']:
 print('fetching next: pagination token',artists['paginationToken'])
 url = BASE_URL + "?paginationToken=" + artists['paginationToken']
 artists_next_page = requests.get(url).json()
 next_artists = artists_next_page['data']
 time.sleep(0.25)
 all_artists = all_artists + next_artists
 artists = artists_next_page
 json.dump(all_artists,indent=4)

from pprint import pprint

with open('artistdata.json',encoding='utf-8') as data_file: 
 data = json.load(data_file)
 pprint(data)

你可能想看:

标签:datapython
分享给朋友:

继续阅读

若需了解「开云手机站登录入口使用方法」的上下文,可结合站内栏目与相关篇目交叉阅读。

栏目用于追新,文内链接用于对照细节。两者配合可减少漏读与重复检索。

继续浏览时优先选择同栏目或相近主题,避免被站外镜像带偏。

站点导览

python · wiki · 科技 · 文化

页面按栏目组织。可先看导读,再进入相关篇目或返回列表。