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