Не удается открыть файл, если он не запущен из __main__ - PullRequest
2 голосов
/ 16 февраля 2020

Это мое файловое дерево:

run.py
foo/
    file.py
    foo.json

В file.py есть следующий код:

import json

print(json.load(open('foo.json')))

В run.py есть следующий код:

import foo.foo as foo

При запуске run.py я получаю следующую ошибку:

Traceback (most recent call last):
  File "run.py", line 1, in <module>
    import foo.foo as foo
  File "C:\Users\user\Desktop\foo\foo.py", line 3, in <module>
    print(json.load(open('foo.json')))
FileNotFoundError: [Errno 2] No such file or directory: 'foo.json'

Как запустить run.py без получения этой ошибки и без run.py, находящейся в том же каталоге. Любая помощь приветствуется!

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Как упоминалось @DeepSpace, вы можете попробовать установить foo.json в foo/foo.json? Поскольку ошибка указывает, что он не может найти такой файл с именем 'foo.json`, он может быть связан с тем, что файл не найден.

Вы также можете запустить его по абсолютному пути (читай здесь ). Попробуйте получить текущий рабочий каталог и установить имя_файла в качестве аргумента.

Python 2 и 3

Для каталога запускаемого сценария:

import os
os.path.dirname(os.path.abspath(__file__))

Если вы имеете в виду текущий рабочий каталог:

import os
os.path.abspath(os.getcwd())

Подробнее об этом можно узнать из документов здесь

2 голосов
/ 16 февраля 2020

Получите абсолютный путь os.path.abspath(os.path.join(os.path.dirname(__file__), 'your file')

В вашем файле укажите путь от вершины проекта, должно быть /foo/foo.json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...