def rdcandump(filename, count=None,
              is_not_log_file_format=False,
              interface=None):
    """Read a candump log file and return a packet list

count: read only <count> packets
is_not_log_file_format: read input with candumps stdout format
interfaces: return only packets from a specified interface

    """
    try:
        if isinstance(filename, six.string_types):
            file = open(filename, "rb")
        else:
            file = filename

        pkts = list()
        ifilter = None
        if interface is not None:
            if isinstance(interface, six.string_types):
                ifilter = [interface]
            else:
                ifilter = interface

        for l in file.readlines():
            if is_not_log_file_format:
                h, data = l.split(b']')
                intf, idn, le = h.split()
                t = None
            else:
                t, intf, f = l.split()
                idn, data = f.split(b'#')
                le = None
                t = float(t[1:-1])

            if ifilter is not None and intf.decode('ASCII') not in ifilter:
                continue

            data = data.replace(b' ', b'')
            data = data.strip()

            pkt = CAN(identifier=int(idn, 16), data=binascii.unhexlify(data))
            if le is not None:
                pkt.length = int(le[1:])
            else:
                pkt.length = len(pkt.data)

            if len(idn) > 3:
                pkt.flags = 0b100

            if t is not None:
                pkt.time = t

            pkts.append(pkt)
            if count is not None and len(pkts) >= count:
                break

    finally:
        file.close()

    return pkts
def rdcandump ( filename , count = None , is_not_log_file_format = False , interface = None ) : try : if isinstance ( filename , six . string_types ) : file = open ( filename , "rb" ) else : file = filename pkts = list ( ) ifilter = None if interface is not None : if isinstance ( interface , six . string_types ) : ifilter = [ interface ] else : ifilter = interface for l in file . readlines ( ) : if is_not_log_file_format : h , data = l . split ( b']' ) intf , idn , le = h . split ( ) t = None else : t , intf , f = l . split ( ) idn , data = f . split ( b'#' ) le = None t = float ( t [ 1 : - 1 ] ) if ifilter is not None and intf . decode ( 'ASCII' ) not in ifilter : continue data = data . replace ( b' ' , b'' ) data = data . strip ( ) pkt = CAN ( identifier = int ( idn , 16 ) , data = binascii . unhexlify ( data ) ) if le is not None : pkt . length = int ( le [ 1 : ] ) else : pkt . length = len ( pkt . data ) if len ( idn ) > 3 : pkt . flags = 0b100 if t is not None : pkt . time = t pkts . append ( pkt ) if count is not None and len ( pkts ) >= count : break finally : file . close ( ) return pkts
Read a candump log file and return a packet list

count: read only <count> packets
is_not_log_file_format: read input with candumps stdout format
interfaces: return only packets from a specified interface