将 Python 中的 blf 文件拆分成更小的文件
Split blf-files in Python into smaller files
我想知道是否可以在 Python 中拆分 BLF 文件?我知道有一个库(可以)支持 BLF 文件,但找不到关于如何 split/save 的文档。我可以读取 BLF 文件:
import can
log = can.BLFReader("logfile.blf")
如果有人知道我将如何拆分此文件并将其保存为更小的 blf 文件,我将不胜感激。
您可以读取您的日志文件并将所有消息写入新文件,每 N 条消息更改一次文件(在我的示例中 N=100,这是非常低的)。我发现查看 doc 非常有用,否则我不知道如何在 log_in
上恢复迭代(在本例中作为生成器)或如何轻松获得 object_count
:
import can
OUTPUT_MAX_SIZE = 100
with open("blf_file.blf", 'rb') as f_in:
log_in = can.io.BLFReader(f_in)
log_in_iter = log_in.__iter__()
object_count = log_in.object_count
i = 0
while i*OUTPUT_MAX_SIZE < object_count:
i += 1
with open(f"smaller_file{i}.blf", 'wb') as f_out:
log_out = can.io.BLFWriter(f_out)
j = 0
while j < OUTPUT_MAX_SIZE:
log_out.on_message_received(log_in_iter.__next__())
j += 1
log_out.stop()
我想知道是否可以在 Python 中拆分 BLF 文件?我知道有一个库(可以)支持 BLF 文件,但找不到关于如何 split/save 的文档。我可以读取 BLF 文件:
import can
log = can.BLFReader("logfile.blf")
如果有人知道我将如何拆分此文件并将其保存为更小的 blf 文件,我将不胜感激。
您可以读取您的日志文件并将所有消息写入新文件,每 N 条消息更改一次文件(在我的示例中 N=100,这是非常低的)。我发现查看 doc 非常有用,否则我不知道如何在 log_in
上恢复迭代(在本例中作为生成器)或如何轻松获得 object_count
:
import can
OUTPUT_MAX_SIZE = 100
with open("blf_file.blf", 'rb') as f_in:
log_in = can.io.BLFReader(f_in)
log_in_iter = log_in.__iter__()
object_count = log_in.object_count
i = 0
while i*OUTPUT_MAX_SIZE < object_count:
i += 1
with open(f"smaller_file{i}.blf", 'wb') as f_out:
log_out = can.io.BLFWriter(f_out)
j = 0
while j < OUTPUT_MAX_SIZE:
log_out.on_message_received(log_in_iter.__next__())
j += 1
log_out.stop()