Не удается найти файл views.py

Я столкнулся с очень странной проблемой.

У меня есть файл под названием: "test.txt".

Он находится в том же каталоге, что и views.py. Но я не могу его прочитать... FileNotFoundError.

Но если я создаю read_file.py в одной директории с views.py и test.txt, он работает абсолютно нормально.

Что не так с представлениями? Это какое-то ограничение со стороны Django?

Этот код работает на read_file, не работает на views.py:

fkey = open("test.txt", "rb")
key = fkey.read()

Я думаю, что проблема может заключаться в относительной и абсолютной работе с файлами. Используя следующий фрагмент Python, вы можете определить, где находится текущий рабочий каталог интерпретатора:

import os
print(os.getcwd())

Вы должны заметить, что он находится не в том же каталоге, что и views.py, поскольку views.py, вероятно, вызывается из другого модуля. Вы можете изменить все ваши вызовы open, чтобы они включали весь путь к этим файлам, или использовать реализацию, подобную этой:

import os

# This function can be used as a replacement for `open`
# which will allow you to access files from the file.
def open_relative(path, flag="r"):

    # This builds the relative path by joining the current directory
    # plus the current filename being executed.
    relative_path = os.path.join(os.path.dirname(__file__), path)

    return open(relative_path, flag) # return file handler

Тогда это должно работать:

fkey = open_relative("test.txt", "rb")
key = fkey.read()

Надеюсь, это поможет!

Вернуться на верх