按时间顺序对日期和月份文件名进行排序

sort dated and monthed filenames chronologically

我有几个格式如下的txt文件。它们都在同一个名为 folder_path 的目录中,并且都以“date Month 2019”格式开头,后面是文件名的其余部分,然后是“.txt”。每个文件都有不同的名称和不同的日期和月份。

4 JUN 2019 file name something.txt
1 JUN 2019 file name something.txt
18 APR 2019 file name.txt
15 APR 2019 file name.txt
13 APR 2019 file name.txt

我需要按时间顺序、月份和日期对它们进行排序,而不更改文件名的其余部分。所以文件应该是这样的:

13 APR 2019 somename.txt
15 APR 2019 somename.txt
18 APR 2019 filename.txt
1 JUN 2019 somename.txt
4 JUN 2019 somename.txt

我正在考虑使用 sorted 并计算前 7 位数字,或者将日期和月份与文件名分开。我做了这样的事情,但什么也没发生。我是 Python 的新手,非常感谢任何解决方案。

def first_7chars(filename):
    return(filename[0:8])

sorted(folder_path, key = first_7chars)

您可以在 sorted 函数中使用 datetime.datetime

files = ['4 JUN 2019 file name something.txt',
'1 JUN 2019 file name something.txt',
'18 APR 2019 file name.txt',
'15 APR 2019 file name.txt',
'13 APR 2019 file name.txt']

from datetime import datetime
out = sorted(files, key=lambda file: datetime.strptime(' '.join(file.split()[:3]), '%d %b %Y'))

输出:

['13 APR 2019 file name.txt',
 '15 APR 2019 file name.txt',
 '18 APR 2019 file name.txt',
 '1 JUN 2019 file name something.txt',
 '4 JUN 2019 file name something.txt']