我需要做两件事。
首先,获取
request
对象并保存对象属性值 将文件作为某些已知密钥的值。此文件需要可编辑 保存后,即用户可以修改键的值(所以我用过 json格式)。这是在功能上处理的save_auth_params_to_file()
。其次,以我可以检索的格式获取文件内容 使用键的值。这是在功能上处理的
get_auth_params_from_file
。
import json
import os
SUCCESS_AUTH_PARAM_FILE = '/auth/success_auth_params.json'
def save_auth_params_to_file(request):
auth_params = {}
if request is not None:
auth_params['token'] = request.token
auth_params['auth_url'] = request.auth_url
auth_params['server_cert'] = request.server_cert
auth_params['local_key'] = request.local_key
auth_params['local_cert'] = request.local_cert
auth_params['timeout'] = request.timeout_secs
with open(SUCCESS_AUTH_PARAM_FILE, 'w') as fout:
json.dump(auth_params, fout, indent=4)
def get_auth_params_from_file():
auth_params = {}
if os.path.exists(SUCCESS_AUTH_PARAM_FILE):
with open(SUCCESS_AUTH_PARAM_FILE, "r") as fin:
auth_params = json.load(fin)
return auth_params
问题:
是否有更多的pythonic方式来实现这两件事?
我忽略了代码中的任何潜在问题?
我需要注意的任何错误情况?
答案 0 :(得分:2)
有些事情需要注意,是的:
i)由于某种原因request
为None
时,您正在将空JSON对象保存到文件中。如果request
不是None
?
auth_params = {}
if request is not None:
auth_params['token'] = request.token
auth_params['auth_url'] = request.auth_url
auth_params['server_cert'] = request.server_cert
auth_params['local_key'] = request.local_key
auth_params['local_cert'] = request.local_cert
auth_params['timeout'] = request.timeout_secs
with open(SUCCESS_AUTH_PARAM_FILE, 'w') as fout:
json.dump(auth_params, fout, indent=4)
ii)为什么不一次创建dict?
auth_params = {
'token': request.token,
'auth_url': request.auth_url,
'server_cert': request.server_cert,
'local_key': request.local_key,
'local_cert': request.local_cert,
'timeout': request.timeout,
}
iii)确保此文件位于具有SAFE权限的SAFE位置。这是敏感数据,例如与身份验证相关的任何内容。
iv)每次调用save_auth_params_to_file
时都会覆盖您的文件。也许你的意思是将你的JSON附加到文件而不是覆盖?如果是这样的话:
with open(SUCCESS_AUTH_PARAM_FILE, 'a') as fout: