[英]How to get the newest directory in Python
我正在寻找一种方法,可以找到在另一个目录中创建的最新目录我唯一的方法是os.listdir()
但它显示了所有文件和目录。 如何仅列出目录以及如何访问目录的属性以找出最新创建的目录? 谢谢
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()
是一个内置函数。 这里有一些例子
我显示的代码通过os.path.getctime(ELEMENT)反向排序dirs中的所有elemens。 结果又是一个列表。 当然可以使用[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')
以下Python代码应该可以解决您的问题。
import os
import glob
for dir in glob.glob('*'):
if os.path.isdir(dir):
print dir,":",os.path.getctime(dir)
查看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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.