我的Flask应用程序结构看起来像
application_top/
application/
static/
english_words.txt
templates/
main.html
urls.py
views.py
runserver.py
Run Code Online (Sandbox Code Playgroud)
当我运行时runserver.py,它启动服务器localhost:5000.在我views.py,我尝试打开该文件english.txt作为
f = open('/static/english.txt')
Run Code Online (Sandbox Code Playgroud)
它给出了错误 IOError: No such file or directory
我该如何访问此文件?
Cpp*_*ner 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
Run Code Online (Sandbox Code Playgroud)
如果这是您要设置的方式,请尝试以下方法:
#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')
Run Code Online (Sandbox Code Playgroud)
现在在您的视图中,您可以简单地执行:
import os
from settings import APP_STATIC
with open(os.path.join(APP_STATIC, 'english_words.txt')) as f:
f.read()
Run Code Online (Sandbox Code Playgroud)
根据您的要求调整路径和级别.
这是 CppLearners 答案的一个简单替代方案:
from flask import current_app
with current_app.open_resource('static/english_words.txt') as f:
f.read()
Run Code Online (Sandbox Code Playgroud)
请参阅此处的文档:Flask.open_resource
| 归档时间: |
|
| 查看次数: |
37196 次 |
| 最近记录: |