簡體   English   中英

保存和檢索Python對象屬性值到文件

[英]Saving and Retrieving Python object Attributes values to a file

我需要完成2件事。

首先,獲取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. 有沒有更多的pythonic方式來實現兩件事?

  2. 我忽略了代碼中的任何潛在問題?

  3. 我必須注意任何錯誤情況嗎?

有一些事情要注意,是的:

i)當由於某種原因您的requestNone ,您正在將一個空的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)為什么不立即創建字典?

    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:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM