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设置名称。我该如何优化它?
答案 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)