-1

我的文件夹名为 29Jun2011,12Aug2013,31Jan2013,08Aug1985。我必须使用 Python 脚本按时间倒序排序。而且我必须将最新的一个存储在一个变量中并打印出来。

4

2 回答 2

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
于 2013-08-13T10:22:16.267 回答
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

这要快得多。一般来说,如果你的问题是“找到最大值”,你不想使用排序;如果只需要最大值,则使用该max()函数;如果需要 n 个值,请使用heapq.nlargest

于 2013-08-13T09:57:12.250 回答