我一直在使用python candas将blf转换为csv,但这需要太长时间。谁能给我一个最好的解决方案。将candas导入为cddb = cd.load_dbc(“dbc_folder”)
log = cd.from_file(“my_file”)
print(log[“AVGcellTemperature”])
w1e3prcc1#
我不熟悉candas,但对于这个简单的用例,你可以用几行代码转换python-can:
import can with open('trace.blf', 'rb') as f_in: log_in = can.io.BLFReader(f_in) with open("trace.csv", 'w') as f_out: log_out = can.io.CSVWriter(f_out) for msg in log_in: log_out.on_message_received(msg) log_out.stop()
请注意,数据列是base64编码的(请参见doc)。您可以使用pandas轻松地将其转换为更传统的格式:
import pandas as pd from base64 import b64decode df = pd.read_csv('trace.csv') df['data'] = df['data'].apply(lambda x: b64decode(x).hex())
如果您发现任何性能改进,请告诉我们!
1条答案
按热度按时间w1e3prcc1#
我不熟悉candas,但对于这个简单的用例,你可以用几行代码转换python-can:
请注意,数据列是base64编码的(请参见doc)。您可以使用pandas轻松地将其转换为更传统的格式:
如果您发现任何性能改进,请告诉我们!