python - 如何使用 python-can 修复损坏的 .blf 文件(来自 Vector 软件)
问题描述
这类似于这个问题,除了我想以一个新的 BLF 文件而不是 .csv 文件结束。我这样做是为了删除 BLF 文件中的损坏对象,该对象使我无法将其导入 Vector 的软件。我想有一种方法可以直接将 BLFReader 生成的“can.io.blf.BLFReader”类对象直接传递给 BLFWriter,但我无法弄清楚如何。下面的示例代码应该有助于解释我想要实现的功能:
import can
filename_in = "corrupted.blf"
log = can.io.BLFReader(filename_in)
filename_out = "cleaned.blf"
can.io.BLFWriter(filename_out,log)
解决方案
这是我的解决方案:
def BLFRepair(filename_in, filename_out):
""" Repairs a corrupted Vector .blf fileself.
Args:
filename_in (str): Filename of input corrupted file.
filename_out (str): Filename to save repaired file with.
"""
cleaned_log=BLFReader(filename_in) # ignores errors
logger=BLFWriter(filename_out)
for msg in cleaned_log:
logger.on_message_received(msg)
logger.stop()
推荐阅读
- android - 向 BottomSheetDialogFragment 添加边距
- java - JSoup - 仅提取标题和价格
- javascript - 错误 - 使用 vue-i18n 插件“找不到模块 ./en.json”
- google-apps-script - 使用 UrlFetchApp 进行授权
- c# - 调用 Activator.CreateInstance() 实例方法的类型安全方式?
- python - Ujson 适用于 MacOS,但不适用于 Ubuntu
- html - 如何删除日文字符下方的空格?
- python-3.x - 如何在指定块中强制使用 sha256 哈希
- python - (Python)从嵌套字典中的特定键中查找值总和的函数
- arrays - Laravel orderBy 未按正确顺序对数据进行排序