nam*_*nam 3 python directory operating-system
我正在寻找一种方法,可以找到在另一个目录中创建的最新目录.我唯一的方法是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]
Run Code Online (Sandbox Code Playgroud)
更新:
也许更多解释:
[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)
Run Code Online (Sandbox Code Playgroud)
会做,但列表理解被认为更具可读性.
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')
Run Code Online (Sandbox Code Playgroud)
以下Python代码应该可以解决您的问题.
import os
import glob
for dir in glob.glob('*'):
if os.path.isdir(dir):
print dir,":",os.path.getctime(dir)
Run Code Online (Sandbox Code Playgroud)