我有一个包含 *.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)
但是我对正则表达式有点陌生。谢谢
您可以使用
.split()
来分割字符串。
看来我们可以从最后一次出现的“_”中拆分出来,去掉“.”后面的部分。获取时间戳。 def get_timestamp(file_name):
return file_name.split("_")[-1].split('.')[0]
由于所有日期的格式相同,Python 可以使用时间戳字符串本身对这些日期进行排序。
要使用该时间戳获取文件名的排序列表,您可以执行以下操作:
sorted_list = sorted(list_files, key=get_timestamp)
更多关于Key功能可以从Python官方文档了解。
如果文件位于名为
inFiles
的数组中。使用以下代码行根据字符串上的日期排列它们。
inFiles = sorted(inFiles, key=lambda file_name:datetime.strptime(os.path.basename(file_name).split('_')[2],"%Y-%m-%dT%H:%M:%S.%f"))