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

问题描述 投票:0回答:2

我有一个包含 *.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)

但是我对正则表达式有点陌生。谢谢

python sorting date
2个回答
3
投票

您可以使用

.split()
来分割字符串。 看来我们可以从最后一次出现的“_”中拆分出来,去掉“.”后面的部分。获取时间戳。
因此,从文件名返回时间戳的方法是:

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

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

sorted_list = sorted(list_files, key=get_timestamp)

更多关于Key功能可以从Python官方文档了解。


0
投票

如果文件位于名为

inFiles
的数组中。使用以下代码行根据字符串上的日期排列它们。

 inFiles = sorted(inFiles, key=lambda file_name:datetime.strptime(os.path.basename(file_name).split('_')[2],"%Y-%m-%dT%H:%M:%S.%f"))

© www.soinside.com 2019 - 2024. All rights reserved.