2016-12-07 3 views
1

두 가지 작업이 필요합니다.파이썬 객체 저장 및 가져 오기 속성 값을 파일로

첫째, 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. 간과 한 코드의 잠재적 문제는 무엇입니까?

  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: