2016-12-07 12 views
1

私は2つのことを行う必要があります。Pythonオブジェクトの保存と取り込み属性値をファイルに

まず、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 

質問:

  1. は、2つのことを達成するために、より多くの神託の方法はありますか?

  2. 私が見落としたコードの潜在的な問題はありますか?

  3. 注意しなければならないエラー条件はありますか?

答えて

2

は、はい、いくつか注意すべき点があります。

ⅰ)あなたのrequestが何らかの理由でNoneで、あなたのファイルに空のJSONオブジェクトを保存しています。 requestNoneでない場合にのみ、あなたのファイルに書きたいでしょうか?

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権限を持つ安全な場所にあることを確認してください。これは、認証に関連するもののような機密データです。

iv)save_auth_params_to_fileが呼び出されるたびにファイルを上書きしています。上書きするのではなく、JSONをファイルに追加するということでしょうか?その場合:

with open(SUCCESS_AUTH_PARAM_FILE, 'a') as fout: 
関連する問題