使用strftime格式化字典中的datetime.timedelta对象

时间:2014-08-07 01:27:49

标签: python python-2.7 datetime iteration datetime-format

所以说我有一些datetime.timedelta objects存储在字典中,我打算将它们写入并输出.txt文件。我更喜欢这个输出文件易于阅读,以便从中获取信息而不会浪费太多时间。所以我绝对想要用接近这个的东西来格式化这些我假设:

a_time_obj.strftime("%H:%M:%S")

我还假设我将不得不迭代每个对象,我不太确定如何处理这些datetime.timedelta对象。可以吗?如果是这样,那么实现这个目标的方法是什么?

当我写入.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

错误讯息: 对于key,get_weekly_hours.iteritems()中的值:         formatted_value = value.strftime("%H:%M:%S")     return formatted_value属性:错误' int'对象没有属性' strftime'

2 个答案:

答案 0 :(得分:3)

注意:您的示例dict包含int值和datetime.timedelta值。这几乎肯定不是你的意思。使用datetime.timedelta()(00:00:00增量)而不是值0来初始化您的dict。

而不是{'星期一':0}你会存储{'星期一':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))

答案 1 :(得分:0)

假设您有一个名为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