如何获取Python中的最新目录

如何获取Python中的最新目录,python,operating-system,directory,Python,Operating System,Directory,我正在寻找一种方法,可以找到在另一个目录中创建的最新目录 我唯一的方法是os.listdir(),但它显示了其中的所有文件和目录。如何仅列出目录,如何访问目录的属性以查找最新创建的目录? 谢谢下面的Python代码应该可以解决您的问题 import os import glob for dir in glob.glob('*'): if os.path.isdir(dir): print dir,":",os.path.getctime(dir) 更新: 也许有更多的解释: [d表

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

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

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

也许有更多的解释:

[d表示os.listdir('.')中的d,如果os.path.isdir(d)]

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

代码的作用与

dirs = []
for d in os.listdir('.'):
    if os.path.isdir(d):
        dirs.append(d)
可以,但列表理解被认为更具可读性

sorted()
是一个内置函数。例如

我展示的代码按照os.path.getctime(ELEMENT)对dirs中的所有元素进行反向排序。
结果又是一个列表。当然,可以使用
[index]
语法和访问它。我编写了一个小函数,用于返回最新目录的名称:

#!/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')
查看文档中的示例,了解获取目录的简单方法

root, dirs, files = os.walk('/your/path').next()
然后检查哪些取决于您的操作系统可能是创建或修改时间。如果你还不熟悉它,你也会想好好读一读

操作系统路径。getctime(路径)返回系统的ctime,在某些系统(如Unix)上是上次更改的时间,在其他系统(如Windows)上是path的创建时间


这找到最新的答案了吗?@Jesh你的另一个答案基本上是这个答案的重复,添加了排序。如果你只是在改进你现有的答案,最好是对其进行编辑。谢谢!但OP的问题是如何找到目录的属性(创建时间),最终目的是对它们进行排序。我就这样回答了他的问题。第二个答案进一步分类。我更愿意将它们分开。我想我只是不知道这是如何解决问题的,当问题的第一行是
时,我正在寻找一种方法,可以找到在另一个目录中创建的最新目录。
。op的问题正是:“如何仅列出目录以及如何访问目录的属性以查找最新创建的目录?”您能否解释行lister=sorted(dirs.iteritems(),key=operator.itemgetter(1))?当然!所以基本上,我只是创建一个字典,其中键是目录的名称,值是目录的创建时间。然后,我根据值对字典进行排序,以找到最新的目录。此外,check out sorted()是一个内置函数。谷歌搜索“python sorted”“向您提供文档和其他一些SO问题。我是否可以使用listdir()而不是listdir('.')?否,os.listdir采用强制参数。“.”只是“当前目录”的快捷方式(您也可以使用os.curdir,当然,也可以将绝对/相对路径传递给您感兴趣的目录)“排序(dirs,key=lambda x:os.path.getctime(x),reverse=True)[:1]”实际上显示了一个正确的列表,因此我可以通过“排序”只获取第一个元素(dirs,key=lambda x:os.path.getctime(x),reverse=True)[0]?@HOAINAMNGUYEN我更新了答案。我希望现在您能更清楚地了解代码的作用。
root, dirs, files = os.walk('/your/path').next()
max((os.path.getctime(os.path.join(root, f)), f) for f in dirs)