2

我发现自己需要在 python 配置文件中指定一个时间跨度。

有没有一种方法可以在带有 stdlib 的 python 配置文件中指定更人类可读的时间范围(类似于 PostgreSQL 的间隔语法)?或者这需要第 3 方库吗?

澄清 我不是ConfigParser.ConfigParser专门在 stdlib API 中寻找任何东西。我想我真正需要的是一种从人类可读的日期/时间间隔到datetime.timedelta值的方法。

4

2 回答 2

3

我在一个有点相关的问题中找到了一个很好的答案。原来humanfriendly图书馆做得很好:

In [1]: import humanfriendly

In [2]: humanfriendly.parse_timespan('1w')
Out[2]: 604800.0

那是几秒钟。要获取一个timedelta对象,您可以简单地加载它:

In [3]: from datetime import timedelta

In [4]: timedelta(seconds=humanfriendly.parse_timespan('1w'))
Out[4]: datetime.timedelta(7)

由于humanfriendly 还支持另一种方式的转换,您也可以进行完整的往返,如下所示:

In [5]: humanfriendly.format_timespan(timedelta(seconds=humanfriendly.parse_timespan('1w')).total_seconds())
Out[5]: '1 week'

请注意如何format_timespan不访问timedelta对象,不幸的是:只有一个整数(秒)。

于 2018-11-09T18:56:10.137 回答
1

我认为没有标准库模块。我写了一个这样做的。您可以安装它,或根据您的需要调整它。

该模块称为pycopia.timespec

它将诸如“1day 3min”之类的字符串转换为秒,作为浮点数。很容易从中得到一个datetime.timedelta

于 2012-12-19T18:48:33.470 回答