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
如何访问此文件?
答案 0 :(得分:45)
我认为问题在于您将/
放在路径中。移除/
,因为static
与views.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}}