2017-09-24 71 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) 

現在值會比較日期,這是你想要的。

相關問題