如何将factory.txt文件中的数据正确赋值给Python字典对象
问题根源
你当前的读取逻辑是直接将整行内容赋值给变量,读取到的内容包含了配置项名称、等号和首尾空格,不是只保留你需要的路径值,所以赋值到字典后数据不符合预期。
解决方案
方案1:适配现有写法的修改
仅调整读取时的处理逻辑,拆分每行的键和值,只保留右侧的路径内容:
with open('factory.txt', 'r') as factoryInfo: # 每行按第一个等号拆分,取右侧部分后去除首尾空白 Path_Folder_Name = factoryInfo.readline().strip().split('=', 1)[1].strip() Cloud_Site = factoryInfo.readline().strip().split('=', 1)[1].strip() M_Engine_Path = factoryInfo.readline().strip().split('=', 1)[1].strip() # 此时再赋值字典就能得到正确结果 data = dict( Path = Path_Folder_Name, Cloud = Cloud_Site, Engine = M_Engine_Path )
方案2:通用可扩展的自动读取方案
不需要手动逐行定义变量,自动遍历所有配置行生成字典,适合后续配置项新增的场景:
# 直接读取配置生成和原文件键名一致的字典 raw_data = {} with open('factory.txt', 'r') as factoryInfo: for line in factoryInfo: line = line.strip() # 跳过空行和无等号的无效行 if not line or '=' not in line: continue key, value = line.split('=', 1) raw_data[key.strip()] = value.strip()
如果你需要自定义字典的键名(把原文件的Path_Folder_Name改为Path这类),可以增加键名映射处理:
key_mapping = { 'Path_Folder_Name': 'Path', 'Cloud_Site': 'Cloud', 'M_Engine_Path': 'Engine' } data = {key_mapping[k]: v for k, v in raw_data.items() if k in key_mapping}
内容的提问来源于stack exchange,提问作者SkyeBoniwell
相关产品推荐
相关产品推荐

