通过文件名日期对日期进行排序

时间:2018-01-19 14:56:39

标签: python sorting date

我有一个包含* .txt文件的文件夹,其中包含特定格式(c是字符,d是数字,yyyy-mm-dd-hh-mm-ss是日期格式)

cccccd_ddd_cc_ccc_c_dd-ddd_yyyy-MM-DD-HH-MM-ss.txt

cccccd_ddd_cc_ccc_c_dd-dddd_yyyy-MM-DD-HH-MM-ss.txt

cccccd_ddd_cc_ccc_c_d_yyyy-MM-DD-HH-MM-ss.txt

当单个数字d等于0时

我想创建一个python脚本来获取日期并对该特定日期的文件进行排序。

到目前为止我已经完成了

import os
list_files=[]
for file in os.listdir():
    if file.endswith(".txt"):
        #print(file)
        list_files.append(file)

但我对正则表达式有点新意。感谢

1 个答案:

答案 0 :(得分:2)

您可以使用.split()拆分字符串。 似乎我们可以从" _"的最后一次出现中删除,删除"之后的部分。"得到时间戳。
因此,从file_name返回时间戳的方法是:

def get_timestamp(file_name):
    return file_name.split("_")[-1].split('.')[0]

由于所有日期都是相同的格式,python可以使用时间戳字符串本身对它们进行排序 要使用该时间戳获取已排序的文件名列表,您可以执行以下操作:

sorted_list = sorted(list_files, key=get_timestamp)

有关Key函数的更多信息,请参阅官方python文档。