YML文件打印错误的次数

Times from YML file printing wrong

我有一个 .yml 文件,它是我的配置。在这个文件中,我定义了两次,如下所示:

my-times:
    earliest_time: 17:00  #PM
    latest_time: 19:00  #PM

我的代码如下所示:

conf: object = yaml.safe_load(open('myconfig.yml'))

earliest_time = str(conf['my-times']['earliest_time'])
latest_time = str(conf['my-times']['latest_time'])

print(earliest_time)
print(latest_time)

但是当我在这个时间 window 并且我想在 if 语句中打印或使用它们时,我得到了以下输出:

0:00
1080

如何在上面的代码中正常打印第二次,就像在.yml文件中一样?

yaml 加载程序将 17:00 解释为时间,将 returns 值解释为表示时间(以分钟为单位)的整数。因此 17:00 将是 1020 而 19:00 将是 1140

编辑:代码示例以显示如何以原始形式表示获取的值:

import yaml

with open('myconfig.yml') as yml:
    conf = yaml.safe_load(yml)
    for k in ['earliest_time', 'latest_time']:
        e = conf['my-times'][k]
        h, m = divmod(e, 60)
        print(f'{h:02d}:{m:02d}')

输出:

17:00
19:00

您可以更改您的 yaml 文件:

my-times:
    earliest_time: "17:00"  #PM
    latest_time: "19:00"  #PM

这告诉 YAML 它是一个文字字符串,并禁止将其视为数值的尝试。 查看此 post 了解更多信息: