2013-02-12 6 views
15
struttura dell'applicazione

mio Flask si presenta comeFlask: Come leggere un file nella root dell'applicazione?

application_top/ 
     application/ 
        static/ 
          english_words.txt 
        templates/ 
          main.html 
        urls.py 
        views.py 
     runserver.py 

Quando eseguo il runserver.py, si avvia il server a localhost:5000. Nel mio views.py, provo ad aprire il file english.txt come

f = open('/static/english.txt') 

Dà errore IOError: No such file or directory

Come posso accedere a questo file?

+2

'static' è allo stesso livello di' views.py', prova senza '/'? Tuttavia, suggerisco di fare il percorso completo usando i moduli '__file__' e' os.path .... '. – CppLearner

risposta

36

Penso che il problema è che hai messo / nel percorso. Rimuovi / perché static è allo stesso livello di views.py.

Suggerisco di fare uno settings.py allo stesso livello di views.py O molti utenti di Flask preferiscono usare __init__.py ma io no.

application_top/ 
    application/ 
      static/ 
       english_words.txt 
      templates/ 
       main.html 
      urls.py 
      views.py 
      settings.py 
    runserver.py 

Se questo è come si dovrebbe configurare, provate questo:

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

Ora nel vostro punto di vista, si può semplicemente fare:

import os 
from settings import APP_STATIC 
with open(os.path.join(APP_STATIC, 'english_words.txt')) as f: 
    f.read() 

Regolare il percorso e il livello di base il tuo requisito

+1

Vedere [questo snippet] (http://flask.pocoo.org/snippets/102/) se si utilizza 'config.py' – bahmait

Problemi correlati