Я все еще новичок в Python и не могу сделать то, что я ищу.Я использую Python 3.7.0
У меня есть один файл с именем log.csv, содержащий журнал сообщений CANbus.
Я хочу проверить, что является содержимым метки столбца Data2 иData3, если в идентификаторе метки столбца указан 348.
Если они оба отличаются от «00», я хочу создать новую строку с именем fault_code с «Data3 + Data2».
Затем я хочу проверить другой CSV-файл, в котором появляется эта строка кода, и распечатать столбец 6 этой строки (описание метки).Но в этой последней части я хочу сделать это только один раз для кода ошибки.
Вот мой код:
import csv
CAN_ID = "348"
with open('0.csv') as log:
reader = csv.reader(log,delimiter=',')
for log_row in reader:
if log_row[1] == CAN_ID:
if (log_row[5]+log_row[4]) != "0000":
fault_code = log_row[5]+log_row[4]
with open('Fault_codes.csv') as fault:
readerFC = csv.reader(fault,delimiter=';')
for fault_row in readerFC:
if "0x"+fault_code in readerFC:
print("{fault_row[6]}")
Вот часть файла log.csv
Timestamp,ID,Data0,Data1,Data2,Data3,Data4,Data5,Data6,Data7,
396774,313,0F,00,28,0A,00,00,C2,FF
396774,314,00,00,06,02,10,00,D8,00
396775,**348**,2C,00,**00,00**,FF,7F,E6,02
и это часть faultcode.csv
Level;LED Flashes;UID;FID;Type;Display;Message;Description;RecommendedAction
1;2;1;**0x4481**;Warning;F12001;Handbrake Fault;Handbrake is active;Release handbrake
1;5;1;**0x4541**;Warning;F15001;Fan Fault;blablabla;blablalba
1;5;2;**0x4542**;Warning;F15002;blablabla
Также вы думаете о лучшем способе решения этой задачи?Я читал, что Панды могут быть очень хороши для больших файлов.Поскольку log.csv может иметь 100'000 + ряд, возможно, лучше использовать его.Как вы думаете?
Спасибо за помощь!