chronaxis.dbc_loading
源码基线:8904c2f744951857659abd40aaa3535d57faf53c
1"""集中加载DBC文本,不进入第三方持久缓存入口。23调用方负责导入cantools、复用数据库和校验文件身份;这里使用公开load接口,4保留load_file无缓存分支的格式、编码和解析默认值,不读取缓存环境变量。5"""67import os8910def load_dbc_file(path, cantools):11 """按文件后缀打开一次文本并交给调用方持有的cantools解析。1213 参数: path为原路径对象或字符串;cantools为调用方已导入的模块。14 返回: 官方load返回的数据库。异常: 原文件打开、解析或关闭错误原样传播。15 本次只拥有文本句柄,不保存数据库,不改环境变量或第三方模块。16 """17 # 与两端load_file保持一致:不把未知后缀改成自动探测,非法字节仍替换。18 database_format = os.path.splitext(path)[1][1:].lower()19 encoding = 'cp1252' if database_format in ('dbc', 'sym') else 'utf-8'20 with open(path, encoding=encoding, errors='replace') as stream:21 return cantools.database.load(22 stream, database_format=database_format,23 frame_id_mask=None, prune_choices=False, strict=True,24 )25