La structure de mon application Flask ressemble à
application_top/
application/
static/
english_words.txt
templates/
main.html
urls.py
views.py
runserver.py
Lorsque j'exécute le runserver.py
, le serveur démarre à localhost:5000
. Dans mon views.py
, j'essaie d'ouvrir le fichier english.txt
en tant que
f = open('/static/english.txt')
Cela donne l'erreur IOError: No such file or directory
Comment puis-je accéder à ce fichier?
Je pense que le problème est que vous mettez /
dans le chemin. Supprimez /
car static
est au même niveau que views.py
.
Je suggère de faire un settings.py
du même niveau que views.py
ou de nombreux utilisateurs de Flask préfèrent utiliser __init__.py
mais je ne le fais pas.
application_top/
application/
static/
english_words.txt
templates/
main.html
urls.py
views.py
settings.py
runserver.py
Si c'est le cas, essayez ceci:
#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')
Maintenant, dans vos vues, vous pouvez simplement faire:
import os
from settings import APP_STATIC
with open(os.path.join(APP_STATIC, 'english_words.txt')) as f:
f.read()
Ajustez le chemin et le niveau en fonction de vos besoins.
Voici une alternative simple à la réponse de CppLearners:
from flask import current_app
with current_app.open_resource('static/english_words.txt') as f:
f.read()
Voir la documentation ici: Flask.open_resource