循环添加数据到数据类
python 443
原文标题 :Add data in a loop to dataclass
我有这个功能。在尝试中,我想从 ini 文件的默认部分中获取密钥并将它们传递给数据类。 try 需要检查所有键是否存在,如果不存在 – except 会告诉您所有丢失的键。除了很棒,但我在尝试时遇到了麻烦。我不知道如何获取密钥并将它们传递到数据类中,因为我在 try 之上执行了一个 for 循环。 (我只需要将数据传递到数据类并返回该数据类,但循环使这变得困难)有什么想法或见解吗?谢谢,麻烦您了。
def do_ini():
default_path = os.path.expanduser(config.CONFIG_INI_PATH)
final_path = os.environ.get('INI_PATH', default_path)
parser = ConfigParser()
parser.read(final_path)
ini = read_ini()
if exists(final_path):
keys = ("app", "source_path")
for option in keys:
try:
reed = ini.get("default", option)
#dataclass
#config_data()
return reed
except NoOptionError:
print(f'This key is missing: {option}')
回复
我来回复-
s0mbre 评论
很简单:
import os, dataclasses import configparser def do_ini(): default_path = os.path.expanduser(config.CONFIG_INI_PATH) final_path = os.environ.get('INI_PATH', default_path) if not os.path.exists(final_path): return None parser = configparser.ConfigParser() parser.read(final_path) # configparser.DEFAULTSECT values = None for section in (configparser.DEFAULTSECT, 'app', 'source_path'): try: values = parser.items(section) if values: break except Exception as err: print(err) continue if not values: # no section contains values! return None return dataclasses.make_dataclass('Data', [(k, type(v), dataclasses.field(default=v)) for k, v in values])
2年前