按时间顺序对日期和月份文件名进行排序
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']
我有几个格式如下的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']