也是很久的一个问题了,之前由于各种原因一直拖拉着没去解决。问题:使用python获取指定路径的最近修改的文件名,不用处理子文件夹,不能依赖外部库;使用多种方式实现。

同样查deepseek,R1分析了一大堆,最后给出4个解决方式,一种最不依赖外部库,一种面向对象风格,一种效率最高,一种代码量最少(Lambda风格)。基本不用修改就可以拿来直接用。由是感慨:编程这个活真的有很大一部分要被替代了。

我最喜欢Lambda方式,非常精简。

import os 

BASE_FOLDER = '/home/peter/logs'

# depends on os
def get_latest_file_os(dir_path):
    latest_mtime, latest_file = 0, None
    with os.scandir(dir_path) as entries:
        for entry in entries:
            if entry.is_file():  # 跳过目录
                mtime = entry.stat().st_mtime
                if mtime > latest_mtime:
                    latest_mtime, latest_file = mtime, entry.path
    return latest_file


# depends on os, and it is Lambda way
def get_latest_file_lambda(dir_path):
    files = [os.path.join(dir_path, f) \
        for f in os.listdir(dir_path) \
            if os.path.isfile(os.path.join(dir_path, f))]
    if not files:
        return None
    return max(files, key=lambda x: os.path.getmtime(x))


latest = get_latest_file_os(BASE_FOLDER)
print('Most efficient way:' , latest if latest else "No files found.")

latest = get_latest_file_lambda(BASE_FOLDER)
print('Lambda way:' , latest if latest else "No files found.")

响应:

Most efficient way: /home/peter/logs/a.txt
Lambda way: /home/peter/logs/a.txt