2016-11-08 2 views
1

Я пытаюсь присоединиться json файлы:Python - JSON ValueError: Дополнительные данные

path_to_json = 'generated_playlists/p1/' 
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')] 

json файлы структурированы следующим образом:

{"user1": {"Wild Wood": 1.0, "You Do Something To Me": 1.0, "Reprise": 1.0}} 

но когда я делаю:

for js in json_files: 
    with open(os.path.join(path_to_json, js)) as json_file: 
     pd_data = json.load(json_file) 

Я получаю:

ValueError: Extra data: line 1 column 145 - line 1 column 721 (char 144 - 720)

, что не так с json.load()?

+1

Звучит как проблема с конкретным файлом JSON, а не 'json.load' – chepner

+1

проверьте, имеют ли файлы формат apropiarte. Вы также можете использовать 'try' и' except', поэтому только плохие файлы не загружаются. – edgarstack

+0

@edgarcosta, как бы я сделал это в коде выше? Я бы принял это как ответ –

ответ

2

Как было предложено @edgarcosta, вы можете справиться с ValueError в try-except блоке в вашем for цикле, например, так:

import os 
import json 
import sys 

path_to_json = 'generated_playlists/p1/' 
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')] 

for js in json_files: 
    json_path = os.path.join(path_to_json, js) 
    with open(json_path) as json_file: 
     try: 
      pd_data = json.load(json_file) 
     except ValueError: 
      sys.stderr.write('Could not parse JSON file: {0}'.format(json_path)) 

Это поможет вам определить, какие файлы в формате JSON не могут быть прочитаны.

+0

отлично, спасибо .. –

+1

@data_garden, я сделал небольшое назначение 'os.path.join (path_to_json, js)' to 'json_path'. Таким образом, ValueError должен печатать в std err с файловым путем (а не его содержимым, как я ошибочно сделал раньше). Надеюсь, это поможет! –

Смежные вопросы