【发布时间】:2012-06-14 13:41:43
【问题描述】:
我正在寻找一种可以找到在另一个目录中创建的最新目录的方法
我唯一的方法是os.listdir(),但它显示了里面的所有文件和目录。如何仅列出目录以及如何访问目录的属性以找出最新创建的目录?
谢谢
【问题讨论】:
标签: python operating-system directory
我正在寻找一种可以找到在另一个目录中创建的最新目录的方法
我唯一的方法是os.listdir(),但它显示了里面的所有文件和目录。如何仅列出目录以及如何访问目录的属性以找出最新创建的目录?
谢谢
【问题讨论】:
标签: python operating-system directory
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 中的所有元素进行反向排序。
结果又是一个列表。当然可以使用[index] 语法和slicing 来访问
【讨论】:
这是我编写的一个小函数,用于返回最新目录的名称:
#!/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')
【讨论】:
以下 Python 代码应该可以解决您的问题。
import os
import glob
for dir in glob.glob('*'):
if os.path.isdir(dir):
print dir,":",os.path.getctime(dir)
【讨论】:
I'm looking for a method that can find the newest directory created inside another directory时,我想我只是很困惑这是如何解决问题的。
查看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)
【讨论】: