python list - 方法而不是字符串

时间:2015-02-22 20:59:31

标签: python arrays amazon-web-services boto

我通过python和boto玩AWS。我正在尝试从AWS桶获取密钥的修改日期。之后我将日期解析为' regular'日期格式并尝试将每个值添加到列表中。

不幸的是,当我将值附加到列表并尝试打印它的结果时,我得到datetime函数而不是带日期的字符串。 代码如下所示:

import boto
s3 = boto.connect_s3()
bucket = s3.get_bucket('mybucket')
keys = bucket.list
keys_latest_modified_date_list = []

for key in keys:
    key_latest_modified_date = boto.utils.parse_ts(key.last_modified)
    keys_latest_modified_date_list.append(key_latest_modified_date)
    print key_latest_modified_date
print keys_latest_modified_date_list

首先print返回正确的日期:

2015-02-18 10:11:58

虽然第二个print给了我这样的东西:

[datetime.datetime(2015, 2, 18, 10, 11, 58)]

有没有人知道如何打印列表中的值,如第一个print而不是第二个?

1 个答案:

答案 0 :(得分:2)

您对str()对象的datetime输出及其表示感到困惑:

>>> import datetime
>>> dt = datetime.datetime(2015, 2, 18, 10, 11, 58)
>>> dt
datetime.datetime(2015, 2, 18, 10, 11, 58)
>>> str(dt)
'2015-02-18 10:11:58'
>>> repr(dt)
'datetime.datetime(2015, 2, 18, 10, 11, 58)'

print对您打印的对象调用str,但列表和其他容器始终使用repr()显示其内容。

您必须使用一些字符串格式来处理列表:

print ', '.join(map(str, keys_latest_modified_date_list))

将打印以逗号分隔的datetime对象列表,转换为字符串:

>>> keys_latest_modified_date_list = [dt, dt]
>>> keys_latest_modified_date_list
[datetime.datetime(2015, 2, 18, 10, 11, 58), datetime.datetime(2015, 2, 18, 10, 11, 58)]
>>> ', '.join(map(str, keys_latest_modified_date_list))
'2015-02-18 10:11:58, 2015-02-18 10:11:58'
>>> print ', '.join(map(str, keys_latest_modified_date_list))
2015-02-18 10:11:58, 2015-02-18 10:11:58