Как исправить поврежденный файл .blf (из программного обеспечения Vector) с помощью python-can - PullRequest
0 голосов
/ 02 ноября 2018

Это похоже на этот вопрос , за исключением того, что я хотел бы получить новый файл BLF вместо файла .csv. Я делаю это, чтобы удалить поврежденный объект в файле BLF, который не позволяет мне импортировать его в программное обеспечение Vector. Я предполагаю, что есть способ напрямую передать объект класса 'can.io.blf.BLFReader', сгенерированный BLFReader, непосредственно в BLFWriter, но у меня возникают проблемы с выяснением, как это сделать. Пример кода ниже должен помочь объяснить функциональность, которую я хотел бы достичь:

import can


filename_in = "corrupted.blf"
log = can.io.BLFReader(filename_in)
filename_out = "cleaned.blf"
can.io.BLFWriter(filename_out,log)

1 Ответ

0 голосов
/ 16 ноября 2018

Вот мое решение:

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()
...