【发布时间】:2017-07-25 18:07:24
【问题描述】:
我有一个名为mapping.py 的文件,其中有一个字典methodMapping。在我的 Web 应用程序中,一个键值对被添加到 methodMapping 字典中。在我将它附加到mapping.py 之后,reload(mapping) 被调用,文件重新加载(我通过在文件顶部打印出一条消息来检查),但是当我尝试访问键值对时,KeyError 是提出来。
原始mapping.py文件:
print('mapping.py loaded) methodMapping = {}
methodMapping['key1'] = 'value1'
以下是键值对附加到文件的方式:
from mapping import methodMapping
@app.route('/append', methods=['POST'])
def append():
key = request.form.get('key')
value = request.form.get('value')
value = value.encode('ascii', 'ignore')
f = open('mapping.py', 'a')
f.write('methodMapping["'+key+'"] = '+value)
f.write("\n\n")
f.close()
reload(mapping)
return ....
添加键值后,mapping.py 如下所示:
print('mapping.py loaded')
methodMapping = {}
methodMapping['key1'] = 'value1'
methodMapping['key2'] = 'value2'
但是,当我尝试从 flaskServer.py 访问 methodMapping['key2'] 时,会引发 KeyError 异常。当我重新启动服务器时,它能够找到methodMapping['key2']。
注意:我已经检查过这个link,也尝试过app.run(debug=True, port=8000),但这对我的应用程序来说是不可能的,因为我使用的是带有 Tensorflow 后端的 keras,并且设置 debug=True 将加载它两次并导致ValueError: Tensor tensor(...) is not part of the graph错误
非常感谢任何评论或建议。谢谢。
【问题讨论】:
-
我找到了解决方案:问题出在我导入映射的方式上。如果我想让
reload(mapping)工作,我需要使用import mapping而不是from mapping import ...