2017-09-24 72 views
1

我有很多文件编号是在创建它们的一年中的某一天。例如:在Python中对数据文件进行排序

  • rate_2017_04.txt
  • rate_2017_09.txt
  • rate_2017_45.txt
  • rate_2017_99.txt
  • rate_2017_146.txt
  • rate_2017_267.txt

凡最后的数字表示一年中的某一天。我试图通过使用

rate_file_list = sorted(glob.glob('rate_201*.txt')) 

但是,这样做,我获得像对这些文件进行排序:

  • rate_2017_04.txt
  • rate_2017_09.txt
  • rate_2017_146.txt
  • rate_2017_267.txt
  • rate_2017_45.txt
  • rate_ 2017_99.txt

有什么办法可以设置sorted()来解决这个问题吗?

+0

这可以在Linux命令行中用一行完成。快速和简单 – RomanPerekhrest

回答

1

sorted()接受key参数,该参数是用于从迭代器的每个元素中提取比较键的函数。你可以使用datetime.strptime()为:

from datetime import datetime 

def keyfunc(value): 
    return datetime.strptime(value, "rate_%Y_%j.txt") 

rate_file_list = sorted(glob.glob('rate_201*.txt'), key=keyfunc) 

现在值会比较日期,这是你想要的。

相关问题