0

我刚开始使用 Python-can,我需要编辑内置日志记录功能的报告格式。下面是我所指的代码片段。

logger = can.Logger('log3.asc')

这是来自日志文件的结果标头:

date Mon Jun 06 04:56:40.184122 PM 2020
base hex  timestamps absolute
internal events logged
Begin Triggerblock Wed Dec 12 10:17:48.038 PM 1969
0.000000 Start of measurement
0.000000 1  300             Rx   d 6 00 00 14 CF BE FF

问题在第一行,我不能以微秒为单位报告时间,毫秒是我能走的最远。无论如何在python-can中编辑该值?或者这是否需要额外的代码来手动进入日志文件并对这些值进行条带化?

谢谢你的时间,

4

1 回答 1

1

我认为你无法改变它。在 python-can 的源代码中,它使用 %f 生成微秒,并且没有用于重新定义的常量变量。

class ASCWriter(BaseIOHandler, Listener):
    ...
    def __init__(self, file, channel=1):
        ...
        # write start of file header
        now = datetime.now().strftime("%a %b %m %I:%M:%S.%f %p %Y")
        self.file.write("date %s\n" % now)
        self.file.write("base hex  timestamps absolute\n")
        self.file.write("internal events logged\n")
        ...

如果您尝试更改 datetime.strftime 中 %f 的格式,同样的情况,它将数字设置为 '%06d',也没有用于重新定义的常量变量。

def _wrap_strftime(object, format, timetuple):
    ...
                if ch == 'f':
                    if freplace is None:
                        freplace = '%06d' % getattr(object,
                                                    'microsecond', 0)
    ...

我认为唯一的方法是更改​​py-can或datetime的源代码,但不建议这样做!

于 2020-06-16T02:45:45.163 回答