如何使用Python读取.dat配置文件并提取Name与Key字段值
Python读取dat文件提取Name、Key字段实现方案
问题说明
待读取的license.dat为标准INI结构,内容如下:
[Registration information] Name=nikam Key=KDWOE
需要提取Name对应的字段值、Key对应的字段值。
之前尝试的两种写法存在明显问题:
- 第一种用默认空格做分隔符拆分每行:遇到带空格的节标题
[Registration information]会被错误拆分,且Name=xxx这类无空格的行不会被拆成键值对,完全无法拿到目标值;如果后续直接按等号全量拆分,遇到Key值本身包含等号的场景(比如实际授权Key常带base64编码的等号补位),会把完整的Key值切碎。 - 第二种写法仅能读取完整文件内容,未做结构化解析,无法直接拿到字段对应值。
实现方案
方案1:轻量逐行解析(无第三方依赖,逻辑可控)
逐行遍历文件内容,跳过空行和方括号包裹的节标题,每行仅按第一个等号拆分(避免值内等号导致拆分错误),存入字典后直接取值即可:
license_info = {} with open("./license.dat", "r", encoding="utf-8") as f: for raw_line in f: line = raw_line.strip() # 跳过空行、节标题行 if not line or (line.startswith("[") and line.endswith("]")): continue # 只拆分第一个等号,兼容值内包含等号的场景 field, value = line.split("=", maxsplit=1) license_info[field.strip()] = value.strip() # 提取目标值 name = license_info["Name"] auth_key = license_info["Key"] print("Name值:", name) print("Key值:", auth_key)
方案2:用标准库configparser解析(推荐,适配INI格式全场景)
该文件本身就是标准INI格式,直接用Python内置的configparser库解析即可,不需要自己写边界判断逻辑,自动处理空行、空格、特殊字符等场景:
import configparser cfg = configparser.ConfigParser() cfg.read("./license.dat", encoding="utf-8") # 按节名、字段名取值 name = cfg.get("Registration information", "Name") auth_key = cfg.get("Registration information", "Key") print("Name值:", name) print("Key值:", auth_key)
两种方案都能正确识别带等号的Key值,不会出现内容截断的问题。
内容的提问来源于stack exchange,提问作者WA SENDER
相关产品推荐
相关产品推荐

