gpt4 book ai didi

python - 使用 ConfigObj 或 PyYaml 将字典对提取到交互式工作区中

转载 作者:行者123 更新时间:2023-11-30 23:34:51 35 4
gpt4 key购买 nike

我一直想通过从简单的文本文件中读取变量来定义 Python 中的变量。因此,我阅读了 ConfigParser、ConfigObj、PyYaml 和 JSON 等内容。目前我对 ConfigObj 和 PyYaml 特别感兴趣。然而我还没有能够干净利落地做我想做的事情。

使用 ConfigObj 和 PyYaml,我可以将外部文本文件中定义的所有内容加载到字典中。我想通过提取所有键值对并将它们作为单独的变量存储到我的交互式工作区中来继续处理该字典。

这是我迄今为止一直使用的 PyYaml 方式:

import yaml

config_file = open('myFile', 'r')
config = yaml.read(config_file)

keys = config.keys()
values = config.values()

for i in range(len(keys)):
string = keys[i] + '=' + str(values[i])
eval(string)

使用eval有时会令人不悦,因为可能会导致各种恶意事件的发生。因此我想知道 PyYaml 和/或 ConfigObj 是否有内置函数来实现上述功能?

最佳答案

假设我正确理解您的问题,以下内容应该满足您的要求。

注意:我在覆盖 key 之前检查 key 是否存在,否则将其放在稍微不同的名称下。

import yaml

config_file = open('myFile', 'r')
config = yaml.read(config_file)

keys = config.keys()
values = config.values()

for key,val in zip(keys,values):
if key not in locals():
locals()[key] = val
else:
locals()[key+"_yaml"] = val

虽然这有效,但我实际上建议您坚持使用一本包含您的值(value)观的字典。如果局部变量不存在,只引用字典有什么问题吗?

关于python - 使用 ConfigObj 或 PyYaml 将字典对提取到交互式工作区中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17871588/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com