考虑以下代码:
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'
是否有针对这种情况的解决方法或者我是否需要编写自己的排序函数?
答案 0 :(得分:16)
您可以使用glob。
import os
from glob import glob
glob_pattern = os.path.join('dumps', '*')
files = sorted(glob(glob_pattern), key=os.path.getctime)
答案 1 :(得分:5)
files = sorted(os.listdir('dumps'), key=lambda fn:os.path.getctime(os.path.join('dumps', fn)))
答案 2 :(得分:4)
files = sorted([os.path.join('dumps', file) for file in os.listdir('dumps')], key=os.path.getctime)