web-dev-qa-db-ja.com

os.listdir()に完全なパスをリストさせる

次のコードについて考えてみます。

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

目的は、作成時間に基づいてリストされたファイルをソートすることです。ただし、os.listdirはファイル名のみを提供し、絶対パスはキーを提供しないため、os.path.getctimeは次のような例外をスローします。

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

この状況の回避策はありますか、それとも独自のソート関数を作成する必要がありますか?

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

glob を使用できます。

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