如何在Python中获取最新目录

时间:2012-06-11 16:03:45

标签: python operating-system directory

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

4 个答案:

答案 0 :(得分: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]

<强>更新

也许还有一些解释:

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

是列表理解。您可以阅读有关他们的更多信息here

代码与

相同
dirs = []
for d in os.listdir('.'):
    if os.path.isdir(d):
        dirs.append(d)

可以,但列表理解被认为更具可读性。

sorted()是一个内置函数。一些例子是here

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

访问哪个

答案 1 :(得分: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')

答案 2 :(得分:5)

以下Python代码可以解决您的问题。

import os
import glob
for dir in glob.glob('*'):
  if os.path.isdir(dir):
    print dir,":",os.path.getctime(dir)

答案 3 :(得分:0)

查看os.walk以及文档中的示例,以便轻松获取目录。

root, dirs, files = os.walk('/your/path').next()

然后查看os.path.getctime,这取决于您的操作系统可能是创建或修改时间。如果您还不熟悉它,您还需要阅读os.path.join

  

os.path。 getctime (路径)返回系统的ctime,在某些系统(如Unix)上是最后一次更改的时间,而在其他系统(如Windows)上,是路径的创造时间。

max((os.path.getctime(os.path.join(root, f)), f) for f in dirs)