python - Flask 中尝试通过 app.open_resource() 读取文件时出现 500 HTTP 异常

标签 python flask

和标题差不多。我在本地计算机上尝试了代码,效果很好,但是在部署(Phusion Passenger)时,这似乎不起作用。

from flask import Flask
import flask
import json
import os

app = Flask(__name__)


@app.route('/mods')
def mods_index():
    try:
        reader = app.open_resource(os.path.join(app.root_path , 'static', 'data', 'modifications.json'))
        modifications = json.load(reader)
        reader.close()
    except:
        flask.abort(500)
    return flask.render_template('mods_index.html', mods=modifications)

最佳答案

我认为这是一个文件路径问题,特别是这一行:reader = app.open_resource(os.path.join(app.root_path , 'static', 'data', 'modifications.json'))看起来不正确。

根据 Flask 的 documentation :app.open_resource(...)从应用程序的资源文件夹中打开资源”。在您的代码中,您指定应用程序的根路径两次:

  1. 首先是 app.open_resource(....)
  2. 然后再次输入:app.root_path

所以您的服务器正在尝试打开您的 modifications.json文件来自:<app_root_path>/<app_root_path/static/data/modifications.json<app_root_path>/static/data/modifications.json 相反哪里<app_root_path>是您的应用程序的根目录。所以解决方案是去掉其中一个 <app_root>提到。也许您可以尝试以下方法:

reader_path = os.path.join('static', 'data', 'modifications.json'))
with app.open_resource(reader_path) as f:
    contents = f.read()
     # do_something_with(contents)

希望有帮助!

关于python - Flask 中尝试通过 app.open_resource() 读取文件时出现 500 HTTP 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890195/

相关文章:

python - 是否可以在 locust.io 中联合 WEB 输出数据中的类似 GET 请求?

python - 如何使用flask将内容加载到div元素中

python - 在 pandas 中合并两个以上的文件与一列和公共(public)索引

python - 当我有自定义图层时,为什么会出现此错误 "The following are legacy tf.layers.Layers"?

python - 为什么 Flask 为与我的应用程序位于同一目录中的文件提供 404

Python Flask使用pdfkit将生成的pdf上传到AWS S3而不将其保存到文件夹

python - 到 Flask 的环回访问 token

python - 了解 Flask 请求对象

python - 如何编写正则表达式以特定字符串开头和结尾?

python - 在一行中向数组添加值