0

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'. 目前,我可以通过选项解析器处理第一级字典 [Ex: path and it's value]。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

如果要更新设备 1 名称和设备 2 名称,或者它可能是设备 1 设置名称。我将如何优化它?

4

1 回答 1

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) 
于 2016-11-18T07:19:08.763 回答