我的文件夹名为29Jun2011,12Aug2013,31Jan2013,08Aug1985。我必须使用Python脚本来排序反向时间顺序。我必须在变量中存储最新的一个并打印出来。
答案 0 :(得分:1)
import datetime as dt
date_strs = [
"29Jun2011",
"08Aug1985",
"12Aug2013",
]
my_format = "%d%b%Y"
datetime_objs = []
for date_str in date_strs:
my_datetime = dt.datetime.strptime(date_str, my_format)
datetime_objs.append(my_datetime)
print datetime_objs
datetime_objs.sort(reverse=True)
print datetime_objs
print datetime_objs[0].strftime("%B %d, %Y")
--output:--
[datetime.datetime(2011, 6, 29, 0, 0), datetime.datetime(1985, 8, 8, 0, 0), datetime.datetime(2013, 8, 12, 0, 0)]
[datetime.datetime(2013, 8, 12, 0, 0), datetime.datetime(2011, 6, 29, 0, 0), datetime.datetime(1985, 8, 8, 0, 0)]
August 12, 2013
答案 1 :(得分:0)
如果您可以更改文件夹的名称,请使用ISO-8601日期格式,即YYYY-MM-DD
;您可以使用标准ASCII排序规则对它们进行排序;)
如果无法做到,可以使用
进行排序import time
def sortkey(s):
return time.strptime(s, '%d%b%Y')
names = sorted(unsorted_names, key=sortkey)
但是,如果您只需要最新的,那么您只需要最大值:
def sortkey(s):
return time.strptime(s, '%d%b%Y')
date, filename = max((sortkey(i), i) for i in unsorted_names)
print date, filename
这要快得多。一般来说,如果你的问题是“找到最大值”,你不想使用sort;如果只需要最大值,请使用max()
函数;如果需要n个值,请使用heapq.nlargest