Flask: How To Read A File In Application Root?
My Flask application structure looks like application_top/ application/ static/ english_words.txt templat
Solution 1:
I think the issue is you put /
in the path. Remove /
because static
is at the same level as views.py
.
I suggest making a settings.py
the same level as views.py
Or many Flask users prefer to use __init__.py
but I don't.
application_top/
application/
static/
english_words.txt
templates/
main.html
urls.py
views.py
settings.py
runserver.py
If this is how you would set up, try this:
#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')
Now in your views, you can simply do:
import os
from settings import APP_STATIC
withopen(os.path.join(APP_STATIC, 'english_words.txt')) as f:
f.read()
Adjust the path and level based on your requirement.
Solution 2:
Here's a simple alternative to CppLearners answer:
from flask import current_app
with current_app.open_resource('static/english_words.txt') asf:
f.read()
See the documentation here: Flask.open_resource
Solution 3:
The flask app
also has a property named root_path
to resolve the root directory as well as an instance_path
property for the particular app
directory without requiring the os
module, though I like @jpihl's answer.
withopen(f'{app.root_path}/static/english_words.txt', 'r') as f:
f.read()
Post a Comment for "Flask: How To Read A File In Application Root?"