Python Flask:如何读取应用程序根目录中的文件?

Python Flask:如何读取应用程序根目录中的文件?,python,flask,Python,Flask,我的Flask应用程序结构如下所示 application_top/ application/ static/ english_words.txt templates/ main.html urls.py v

我的Flask应用程序结构如下所示

application_top/
         application/
                    static/
                          english_words.txt
                    templates/
                             main.html
                     urls.py
                     views.py
         runserver.py
当我运行
runserver.py
时,它会在
localhost:5000
启动服务器。 在我的
views.py
中,我尝试打开文件
english.txt
作为

f = open('/static/english.txt')
它给出了error
IOError:没有这样的文件或目录


如何访问此文件?

我认为问题在于您将
/
放在路径中。删除
/
,因为
static
views.py处于同一级别

我建议将
settings.py
设置为与
views.py相同的级别,或者许多Flask用户更喜欢使用
\uuuuu init\uuuuu.py
,但我不喜欢

application_top/
    application/
          static/
              english_words.txt
          templates/
              main.html
          urls.py
          views.py
          settings.py
    runserver.py
如果这是您的设置方式,请尝试以下操作:

#settings.py
import os
# __file__ refers to the file settings.py 
APP_ROOT = os.path.dirname(os.path.abspath(__file__))   # refers to application_top
APP_STATIC = os.path.join(APP_ROOT, 'static')
现在,在您的视图中,您只需执行以下操作:

import os
from settings import APP_STATIC
with open(os.path.join(APP_STATIC, 'english_words.txt')) as f:
    f.read()

根据您的要求调整路径和级别。

这里有一个简单的答案:

from flask import current_app

with current_app.open_resource('static/english_words.txt') as f:
    f.read()

请参阅此处的文档:

静态
视图处于同一级别。py
,是否尝试不使用
/
?但是,我建议您使用
\uu文件\uu
os.path….
模块进行完整路径。查看您是否正在使用
config.py
很棒!!对我有用。