获取根路径中的最新目录

2024-09-29 21:51:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在根目录中找到最新的directory

当前此代码查找根路径中的所有directories,还查找修改的time

import os
from datetime import datetime

root = r'D:\drivers'

def totimeformat(tm):
    return tm.strftime('%Y-%m-%d %H:%M:%S')

dirs = []
for dir in directories:
    d = os.path.join(root, dir)
    if os.path.isdir(d):
        print(d + '' + totimeformat(datetime.fromtimestamp(os.path.getatime(d))))
        dirs.append(d)

Tags: path代码import路径datetimetimeosdir
3条回答

您可以使用os.scandir在一个系统调用中获取给定目录中所有文件的所有信息,以获得更高的效率,并使用max函数和返回给定目录的修改时间的键函数来查找具有最新修改时间的目录:

os.path.join(root, max((f for f in os.scandir(root) if f.is_dir()), key=lambda f: f.stat().st_mtime).name)

您可以使用元组(timestamp, dir)创建列表,并使用sorted()按时间戳排序。你知道吗

排序后:第一个元素是最旧的目录,最后一个元素是最新的目录。你知道吗

import os
from datetime import datetime

def totimeformat(tm):
    return tm.strftime('%Y-%m-%d %H:%M:%S')

root = r'D:\drivers'

dirs = []
for dir in os.listdir(root):
    d = os.path.join(root, dir)
    if os.path.isdir(d):
        dirs.append( (os.path.getatime(d), d) )

newest = sorted(dirs)[-1]
oldest = sorted(dirs)[1]

print(newest[1] + '' + totimeformat(datetime.fromtimestamp(newest[0])))
print(oldest[1] + '' + totimeformat(datetime.fromtimestamp(oldest[0])))  

您还可以获得三个最新的目录sorted(dirs)[-3:]

你的代码基本上是好的。您只需更改它以反映您描述的逻辑:

import os
from datetime import datetime

root = r'D:\drivers'

def totimeformat(tm):
    return tm.strftime('%Y-%m-%d %H:%M:%S')

dirs = []
newestdir = None
newesttime = 0
for dir in directories:
    d = os.path.join(root, dir)
    if os.path.isdir(d):
        t = os.path.getatime(d)
        if t > newesttime:
            newestdir = d
            newesttime = t
print(newestdir + '' + totimeformat(datetime.fromtimestamp(newesttime)))

相关问题 更多 >

    热门问题