我发现自己需要在 python 配置文件中指定一个时间跨度。
有没有一种方法可以在带有 stdlib 的 python 配置文件中指定更人类可读的时间范围(类似于 PostgreSQL 的间隔语法)?或者这需要第 3 方库吗?
澄清 我不是ConfigParser.ConfigParser
专门在 stdlib API 中寻找任何东西。我想我真正需要的是一种从人类可读的日期/时间间隔到datetime.timedelta
值的方法。
我在一个有点相关的问题中找到了一个很好的答案。原来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
对象,不幸的是:只有一个整数(秒)。
我认为没有标准库模块。我写了一个这样做的。您可以安装它,或根据您的需要调整它。
该模块称为pycopia.timespec
它将诸如“1day 3min”之类的字符串转换为秒,作为浮点数。很容易从中得到一个datetime.timedelta
。