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

2024-04-26 12:19:36 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,使用各种操作系统命令(见下文),我有一个包含朱利安日期的路径名列表:

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),有什么方法可以按时间顺序组织这些儒略日期?你知道吗


Tags: topathin命令txtforstringos
1条回答
网友
1楼 · 发布于 2024-04-26 12:19:36

如果您想使用字母数字顺序而不是词典顺序,您必须从字符串中提取整数并根据它们进行排序。你知道吗

一种方法是:

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技能好的话,我会用regex来做。你知道吗

正如评论所说,在你的例子中,没有什么不同,但例如,这两个:

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

将产生不同的结果,这取决于是将数字字符视为字符串还是数字。你知道吗

相关问题 更多 >