2014-09-04 12 views
6

Si consideri il seguente frammento di codice:make os.listdir() Lista percorsi completi

files = sorted(os.listdir('dumps'), key=os.path.getctime) 

L'obiettivo è quello di ordinare i file elencati in base alla data di creazione. Tuttavia, poiché il l'os.listdir dà solo il nome del file e non il percorso assoluto la chiave vale a dire, l'os.path.getctime genera un'eccezione dicendo

OSError: [Errno 2] No such file or directory: 'very_important_file.txt'

C'è una soluzione a questa situazione o ho bisogno scrivere la mia funzione di ordinamento?

risposta

4
files = sorted(os.listdir('dumps'), key=lambda fn:os.path.getctime(os.path.join('dumps', fn))) 
10

È possibile utilizzare glob.

import os 
from glob import glob 
glob_pattern = os.path.join('dumps', '*') 
files = sorted(glob(glob_pattern), key=os.path.getctime) 
3
files = sorted([os.path.join('dumps', file) for file in os.listdir('dumps')], key=os.path.getctime)