如何更新另一个python文件中存在的多级字典?

时间:2016-11-18 06:36:39

标签: python dictionary optionparser

example.py 这是一个python脚本,它有一个多级字典。

test_dict = {'path': '/home/user/user_name',
 'device1': {'IP': '10.10.10.10',
          'password': 'pwd1',
          'username': 'user1',
          'name':'USER_DEFINED'},
 'device2': {'IP': '11.11.11.11',
          'password': 'pwd2',
          'username': 'user2',
          'name':'USER_DEFINED_TEST'}
}

我已经编写了一个单独的python脚本来更新'example.py'中的字典。目前,我可以通过选项解析器处理第一级字典[例如:路径和它的值]。 python example.py --key path --value /home/user/user_name。所以,现在为了处理更新多级字典值。我该如何优化它?你能帮我吗?

    Working :
    file_abs_path = "C://Test_Folder//example.py"
    module = imp.load_source('test_dict', file_abs_path)
    f_dict = module.test_dict
    if f_key != "":
       for key, value in f_dict.items():
         if key == f_key:
            f_dict[f_key] = f_value

parser.add_option("-k", "--key", dest="key",default="",help="")

parser.add_option("-v", "--value", dest="value",default="",help="")
f_key = options.key 
f_value = options.value

如果要更新device1名称& device2名称或它可以是device1设置名称。我该如何优化它?

1 个答案:

答案 0 :(得分:0)

在这种情况下,直接更新example.py字典似乎没有必要。我会采用稍微不同的方法,使用cPickle从文件中读取数据。

example.py文件中,使用此代码段读取数据 -

import cPickle
with open(r"data.pk", "rb") as input_file:
  cPickle.load(d, input_file) 

要写入此cPickle文件(来自其他脚本),

import cPickle
d = {
  'a': {'b': 5, 'c': 6},
  'd': {'e': 7, 'f': 8}
}
# Add some logic to dynamically update d
with open(r"data.pk", "wb") as output_file:
  cPickle.load(d, output_file)