make os.listdir() list complete paths

23,013

Solution 1

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

Solution 2

You can use glob.

import os
from glob import glob
glob_pattern = os.path.join('dumps', '*')
files = sorted(glob(glob_pattern), key=os.path.getctime)

Solution 3

files = sorted([os.path.join('dumps', file) for file in os.listdir('dumps')], key=os.path.getctime)
Share:
23,013
Sohaib
Author by

Sohaib

Updated on July 05, 2022

Comments

  • Sohaib
    Sohaib almost 2 years

    Consider the following piece of code:

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

    The objective is to sort the listed files based on the creation time. However since the the os.listdir gives only the filename and not the absolute path the key ie, the os.path.getctime throws an exception saying

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

    Is there a workaround to this situation or do I need to write my own sort function?

  • william_grisaitis
    william_grisaitis almost 3 years
    glob to the rescue