当前位置: 首页 > 面试题库 >

Flask:如何在应用程序根目录中读取文件?

蓝泰平
2023-03-14
问题内容

我的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

如何访问此文件?


问题答案:

认为问题出在你/的道路上。删除,/因为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()

根据需要调整路径和级别。



 类似资料:
  • 问题内容: 我在MVC项目中引用了一些JavaScript 。当我在本地运行它时,此方法效果很好,因为我有一个被调用的。当我部署它时,我将应用程序部署到“ Jobs”子文件夹中,这意味着该URL应该变成了,但它要去到,我想这是因为javascript不知道“根URL”是什么,并使用该站点作为根。如何使它在两种环境中都能正常工作? 问题答案: 如果您只是在乎获取站点的根目录/基础URL,那么可以附加

  • 我试图把我的头缠在这个问题上2天现在,我找不到任何正确的解决方案在网上和论坛上这个问题。 我无法使用@login\u required decorator在flask应用程序中保护dash应用程序。我可以使用blueprint route中的@login\u调用dash应用程序,以确保其安全并将其重定向到dash应用程序。 但是如果我直接调用dash-applike_localhost:5000/

  • 问题内容: 我正在尝试为服务发现实施领事,而在两件事上遇到了麻烦:连接到自定义DNS服务器,以及格式化我的请求。 这是我要在go应用程序中查找的内容: 这是相关的代码。(我知道这是错误的,但是这样您就可以看到我正在尝试做的事情) 和输出: 任何帮助,将不胜感激!谢谢 问题答案: 尝试使用更锋利的工具,例如包裹。上次查看它时,它几乎可以控制客户端设置的每一位来进行DNS解析。

  • 问题内容: 我正在开发Flask扩展名,我想从该扩展名在文件系统上项目的根路径中创建目录。 假设我们有这个目录结构 my_folder应该由扩展名动态创建,扩展名是一个测试实用程序,并将被测试的应用程序包装在/ tests目录中。但是,我正在努力确定扩展中项目的根路径。 现在,我试图从运行文件中猜测路径: 一旦在IDE中而不是manage.py中运行测试,这显然会中断。我可以简单地推断出相对于ap

  • 问题内容: 我正在尝试将上载的多部分文件写入文件系统。我有一个名为audio的目录,该目录位于Web应用程序的根目录中(不在WEB- INF内,但在它旁边,可以像CSS和javascript一样公开访问)。 我想将上传的文件写入该目录,但似乎无法获取所需的路径。我以为使用ServletPath()然后使用realPath()可能可行,但是我没有通过Spring控制器对ServletContext的