如何在Python中获取最新目录

nam*_*nam 3 python directory operating-system

我正在寻找一种方法,可以找到在另一个目录中创建的最新目录.我唯一的方法是os.listdir()显示其中的所有文件和目录.如何仅列出目录以及如何访问目录的属性以找出最新创建的目录?谢谢

mfu*_*ger 9

import os
dirs = [d for d in os.listdir('.') if os.path.isdir(d)]
sorted(dirs, key=lambda x: os.path.getctime(x), reverse=True)[:1]
Run Code Online (Sandbox Code Playgroud)

更新:

也许更多解释:

[d for d in os.listdir('.') if os.path.isdir(d)]

是列表理解.你可以在这里阅读更多相关信息

代码与...相同

dirs = []
for d in os.listdir('.'):
    if os.path.isdir(d):
        dirs.append(d)
Run Code Online (Sandbox Code Playgroud)

会做,但列表理解被认为更具可读性.

sorted()是一个内置的功能.这里有一些例子

我显示的代码通过os.path.getctime(ELEMENT)反向排序dirs中的所有elemens.结果又是一个列表.当然可以使用[index]语法和切片访问哪个


jes*_*ssh 6

这是我写的一个小函数,用于返回最新目录的名称:

#!/usr/bin/env python

import os
import glob
import operator

def findNewestDir(directory):
    os.chdir(directory)
    dirs = {}
    for dir in glob.glob('*'):
        if os.path.isdir(dir):
            dirs[dir] = os.path.getctime(dir)

    lister = sorted(dirs.iteritems(), key=operator.itemgetter(1))
    return lister[-1][0]

print "The newest directory is", findNewestDir('/Users/YOURUSERNAME/Sites')
Run Code Online (Sandbox Code Playgroud)


jes*_*ssh 5

以下Python代码应该可以解决您的问题.

import os
import glob
for dir in glob.glob('*'):
  if os.path.isdir(dir):
    print dir,":",os.path.getctime(dir)
Run Code Online (Sandbox Code Playgroud)