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

时间:2013-02-12 05:10:30

标签: python flask

My 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')

它提供错误IOError: No such file or directory

如何访问此文件?

2 个答案:

答案 0 :(得分:45)

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

我建议将settings.py设为与views.py相同或许多Flask用户更喜欢使用__init__.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()

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

答案 1 :(得分:0)

这是CppLearners答案的简单替代方法:

from flask import current_app

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

在此处查看文档:{​​{3}}