3

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

4

4 回答 4

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)]

是一个列表理解。你可以在这里阅读更多关于它们的信息

代码的作用与

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

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

sorted()是一个内置函数。一些例子在这里

我展示的代码通过 o​​s.path.getctime(ELEMENT) 对 dirs 中的所有元素进行反向排序。结果又是一个列表。当然可以使用[index]语法和切片访问

于 2012-06-11T16:20:02.110 回答
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')
于 2012-06-11T16:25:17.210 回答
5

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

import os
import glob
for dir in glob.glob('*'):
  if os.path.isdir(dir):
    print dir,":",os.path.getctime(dir)
于 2012-06-11T16:08:56.187 回答
0

查看os.walk文档中的示例以获得获取目录的简单方法。

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

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

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

max((os.path.getctime(os.path.join(root, f)), f) for f in dirs)
于 2012-06-11T16:31:22.113 回答