【问题标题】:How to handle nanoseconds with datetime? [duplicate]如何用日期时间处理纳秒? [复制]
【发布时间】:2021-01-08 00:38:34
【问题描述】:

我正在尝试修改某人编写的现有 Python 脚本来解析和查看二进制 .dat 文件。旧的日志记录格式是 log.2021-01-08.210025.dat.

新的日志现在是log.2021-01-08.210025.718691.dat

我尝试修改下面的代码行,但仍然收到错误。有人可以向我解释一下可能出了什么问题吗?

filetime = datetime.datetime.strptime(m.group(3), '%Y-%m-%d.%H%M%S')
File "/usr/lib64/python2.7/_strptime.py", line 328, in _strptime
data_string[found.end():])
ValueError: unconverted data remains: .277195
begin: 2021-01-07 21:00:25
end: 2021-01-07 21:00:40

【问题讨论】:

标签: python datetime


【解决方案1】:

您在strptime 中指定的格式与您从正则表达式传递的数据不匹配。您的格式是 '%Y-%m-%d.%H%M%S',因此它不知道如何处理剩余的纳秒信息 - 因此错误“未转换的数据仍然存在”

请注意,Python 的日期时间不支持纳秒精度。但它确实支持微秒(6 位小数),这似乎与您所拥有的相匹配

>>> datetime.datetime.strptime('2021-01-08.210025.718691', '%Y-%m-%d.%H%M%S.%f')
datetime.datetime(2021, 1, 8, 21, 0, 25, 718691)

有关 %f 微秒字段 https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes 的信息,请参阅有关格式说明符的 Python 文档

【讨论】:

  • 嗨,彼得 - 我以前试过,但没有用。我需要将它添加到其他几行代码中并且它有效! - 再次感谢:)
猜你喜欢
  • 1970-01-01
  • 2015-01-28
  • 2016-02-02
  • 2015-12-25
  • 2019-11-25
  • 2022-06-13
  • 2019-06-21
  • 2020-09-13
  • 2020-09-29
相关资源
最近更新 更多