FileNotFoundError: [Errno 2] файл JSON

Предыстория.
Я пытаюсь прочитать файл JSON в Jupyter Lab, который затем хочу записать в файл csv.

Проблема.
Мой код должен подниматься на уровень каталога, переходить в папку «Ресурсы» и читать «restaurant.json», однако, когда я запускаю свой код, Jupyter Lab продолжает выдавать проблема -

Ошибка -
FileNotFoundError: [Errno 2] Нет такого файла или каталога: '../Resources/restaurant.json'

Код –

import json
import csv
import os
filepath = os.path.join("..", "Resources", "restaurant.json")
with open(filepath) as jsonfile:
    json_data = json.load(jsonfile)

Структура папки —
Мой файл Jupyter Lab — /Users/MyUserName/Documents/davis/Homework_Repos/ETL-project/working/will.ipynb strong>
Мой файл JSON — /Users/MyUserName/Documents/davis/Homework_Repos/ETL-project/Resources/restaurant.json

Что я думаю.
У меня есть другой проект с идентичной настройкой с точки зрения кода, с той лишь разницей, что имя файла JSON и он отлично читает файл. Мое единственное подозрение заключается в том, что размер файла restaurant.json составляет 10 МБ, поэтому мне интересно, не вызывает ли это проблем

Любой совет будет очень признателен — возможно, мой код должен быть больше скрытый!


person William    schedule 03.07.2020    source источник


Ответы (1)


Используйте pathlib

  • Этот модуль предлагает классы, представляющие пути файловой системы с семантикой, подходящей для разных операционных систем.
  • Он является частью стандартной библиотеки и должен заменить os.
  • Модуль pathlib Python 3: приручение файловой системы
  • With cwd as WindowsPath('Users/MyUserName/Documents/davis/Homework_Repos/ETL-project/working')
    • cwd.parents[0] is WindowsPath('Users/MyUserName/Documents/davis/Homework_Repos/ETL-project')
    • cwd.parents[1] is WindowsPath('Users/MyUserName/Documents/davis/Homework_Repos')
from pathlib import Path
import json

cwd = Path.cwd()
file = cwd.parents[0] / 'Resources' / 'restaurant.json'

with file.open('r', encoding='utf-8') as f:
    data = json.load(f.read())
person Trenton McKinney    schedule 03.07.2020