Python处理文件
也是很久的一个问题了,之前由于各种原因一直拖拉着没去解决。问题:使用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