我通过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
而不是第二个?
答案 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