因此,使用各种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)按时间顺序组织这些朱利安日期有哪些方法?
答案 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']
会产生不同的结果,具体取决于数字字符是被视为字符串还是数字。