在字典中使用strftime格式化datetime.timedelta对象
假设我有一些 datetime.timedelta 对象
存储在一个字典里,我打算把它们写入一个输出的 .txt 文件。我希望这个输出文件能很容易阅读,这样我就能快速获取信息,不用浪费太多时间。所以我肯定想用类似这样的格式:
a_time_obj.strftime("%H:%M:%S")
我还想我需要遍历每个对象,但我不太确定怎么处理这些 datetime.timedelta
对象。这样做可以吗?如果可以,最符合 Python 风格的方法是什么呢?
这是我目前写入 .txt 文件时得到的输出:
{'星期一': 0, '星期二': 0, '星期五': 0, '星期三': datetime.timedelta(0, 18, 496000), '星期四': 0, '星期日': 0, '星期六': 0}
编辑 -- 代码:
for key, value in get_weekly_hours.iteritems():
formatted_value = value.strftime("%H:%M:%S")
return formatted_value
错误信息: for key, value in get_weekly_hours.iteritems(): formatted_value = value.strftime("%H:%M:%S") return formatted_value 属性错误:'int' 对象没有 'strftime' 属性
2 个回答
假设你有一个叫做 your_dict
的字典,这个字典里面存放的是时间差对象(timedelta)。你可以用下面的代码来遍历这个字典。
for key, value in your_dict.iteritems():
a_time_obj_str = value.strftime("%H:%M:%S")
//write your date string in your file
注意:你的示例字典里同时包含了整数值和datetime.timedelta值。这几乎肯定不是你想要的。应该用datetime.timedelta()(一个00:00:00的时间差)来初始化你的字典,而不是用0这个值。
比如,不应该是 {'Monday': 0},而应该是 {'Monday': timedelta.datetime()}。
d = {}
d['key1'] = datetime.timedelta(hours=1, minutes=1, seconds=1)
d['key2'] = datetime.timedelta(hours=2, minutes=2, seconds=2)
d['key3'] = datetime.timedelta(hours=3, minutes=3, seconds=3)
-- 打印这些值,依赖datetime.timedelta的默认字符串表示 --
def serialize_dict(d):
for key,value in d.iteritems():
print '%s: %s' % (key,value)
serialize_dict(d)
#
# output:
# key3: 3:03:03
# key2: 2:02:02
# key1: 1:01:01
-- 或者写入一个文件 --
def serialize_dict(d):
with open('/tmp/output', 'w') as f:
for key, value in d.iteritems():
f.write('%s: %s\n' % (key, value))