在 pythonanywhere Flask 应用程序中读取 json
Reading json in pythonanywhere flask app
初见this question。我的问题是我在 pythonanywhere 上有一个烧瓶应用程序 运行,它从服务器上同一目录中的 json 文件读取信息,并收到以下错误:
Internal Server Error:The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
.
我将应用程序简化为:
from flask import Flask
import json
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
return 'Index'
@app.route('/courses')
def courses():
with open('courses.json', 'r') as f:
these_courses = json.load(f)
return str(these_courses)
如果我转到索引页面,我会看到索引,正如预期的那样,但是如果我尝试转到 /courses
,那么我会得到 error.The 在 localhost
上一切正常,然后使用相同的代码我在服务器上收到错误,所以我知道从文件中读取工作正常。这让我觉得这可能是 json 与 pythonanywhere 结合所独有的问题。
编辑:courses.json
的路径名可能有问题,但它在同一目录中,所以我觉得应该没问题,只是一个想法
原来是路径名问题。我想文件需要从根目录路由。
我运行:
def courses():
my_dir = os.path.dirname(__file__)
json_file_path = os.path.join(my_dir, 'courses.json')
return json_file_path
找到路径,然后改函数为:
def courses():
with open('/home/username/path/to/file/courses.json', 'r') as f:
these_courses = json.load(f)
return str(these_courses)
现在它起作用了:D
然后为了制作一个更好的版本,当您移动项目时不会中断,我是这样做的:
def courses():
my_dir = os.path.dirname(__file__)
json_file_path = os.path.join(my_dir, 'courses.json')
with open(json_file_path, 'r') as f:
these_courses = json.load(f)
return str(these_courses)
替代方案:
import pathlib
path = pathlib.Path('courses.json').absolute()
these_courses = json.loads(path.read_text())
初见this question。我的问题是我在 pythonanywhere 上有一个烧瓶应用程序 运行,它从服务器上同一目录中的 json 文件读取信息,并收到以下错误:
Internal Server Error:The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
.
我将应用程序简化为:
from flask import Flask
import json
app = Flask(__name__)
@app.route('/')
@app.route('/index')
def index():
return 'Index'
@app.route('/courses')
def courses():
with open('courses.json', 'r') as f:
these_courses = json.load(f)
return str(these_courses)
如果我转到索引页面,我会看到索引,正如预期的那样,但是如果我尝试转到 /courses
,那么我会得到 error.The 在 localhost
上一切正常,然后使用相同的代码我在服务器上收到错误,所以我知道从文件中读取工作正常。这让我觉得这可能是 json 与 pythonanywhere 结合所独有的问题。
编辑:courses.json
的路径名可能有问题,但它在同一目录中,所以我觉得应该没问题,只是一个想法
原来是路径名问题。我想文件需要从根目录路由。
我运行:
def courses():
my_dir = os.path.dirname(__file__)
json_file_path = os.path.join(my_dir, 'courses.json')
return json_file_path
找到路径,然后改函数为:
def courses():
with open('/home/username/path/to/file/courses.json', 'r') as f:
these_courses = json.load(f)
return str(these_courses)
现在它起作用了:D
然后为了制作一个更好的版本,当您移动项目时不会中断,我是这样做的:
def courses():
my_dir = os.path.dirname(__file__)
json_file_path = os.path.join(my_dir, 'courses.json')
with open(json_file_path, 'r') as f:
these_courses = json.load(f)
return str(these_courses)
替代方案:
import pathlib
path = pathlib.Path('courses.json').absolute()
these_courses = json.loads(path.read_text())