在python中按时间顺序排序路径名列表

时间:2017-12-22 09:25:14

标签: python list file sorting path

因此,使用各种os命令(见下文),我有一个包含Julian日期的路径名列表:

path = '\path\to\directory\with\files\I\want\'
    list_of_pathnames = [os.path.join(dirpath, f) 
        for dirpath, dirnames, files in os.walk(path)
        for f in fnmatch.filter(files, '*specific_string.txt')]

其中path包含具有以下结构的文件:

path = ['\path\to\directory\with\files\I\want\file_2457621_specific_string.txt',
    '\path\to\directory\with\files\I\want\file_2457632_specific_string.txt',
    '\path\to\directory\with\files\I\want\file_2457622_specific_string.txt']

从最早的(2457621)到最近的(2457632)按时间顺序组织这些朱利安日期有哪些方法?

1 个答案:

答案 0 :(得分:2)

如果您想使用字母数字顺序而非词典,则必须“获取”字符串中的整数并排序基于它们。

一种方法是:

import os
path = [r'\path\to\directory\with\files\I\want\file_2457621_specific_string.txt',
        r'\path\to\directory\with\files\I\want\file_2457632_specific_string.txt',
        r'\path\to\directory\with\files\I\want\file_2457622_specific_string.txt']

path.sort(key=lambda x: int(os.path.basename(x).split('_')[1]))

仅供参考,如果我的regex技能有任何优点,我会用正则表达式来做。

正如评论所说,在你的例子中,没有区别,但例如,这两个:

path = [r'\path\file_22_specific_string.txt', r'\path\file_200_specific_string.txt']

会产生不同的结果,具体取决于数字字符是被视为字符串还是数字。