У меня очень простой вопрос, но я не понимаю, почему он не работает. Я хотел бы установить путь к .json file следующим образом:

with open(settings.BASE_DIR + '../../package.json') as package_json_file:

Но я получаю эту проблему:

FileNotFoundError: [Errno 2] No such file or directory: '/home/val/Bureau/Projets/APP/app/src../../package.json'

Как я могу определить путь от BASE_DIR и вернуться к файлу .json?

1
Essex 22 Окт 2018 в 18:15

2 ответа

Лучший ответ

Вы можете увидеть проблему в сообщении об ошибке: src../../package.json - в src.. отсутствует косая черта.

Вместо объединения строк используйте os.path.join, чтобы вам не приходилось беспокоиться о пропущенных / дублирующих косых чертах.

import os
os.path.join(settings.BASE_DIR, '../../package.json')
3
Alasdair 22 Окт 2018 в 15:20

Прежде всего, проблема в вашем коде должна быть очевидной: вам не хватает обратной косой черты между BASE_DIR и жестко закодированным путем, который вы добавляете. Это это

with open(settings.BASE_DIR + '/../../package.json') as package_json_file:

Должно работать (если пакет там, конечно).

Однако, чтобы избежать таких несоответствий, лучше явно использовать os.path.join для правильного создания путей, т.е. вы можете использовать что-то вроде

with open(os.path.join(settings.BASE_DIR, '..', '..', 'package.json')) as package_json_file:

Дополнительная информация о присоединении: https: //docs.python .org / 3 / библиотека / os.path.html # os.path.join

2
Serafeim 22 Окт 2018 в 15:21
52932635