Как получить новейший каталог в Python

Я ищу способ найти новый каталог, созданный в другом каталоге Единственный метод, который у меня есть,os.listdir() но он показывает все файлы и каталоги внутри. Как я могу перечислить только каталоги и как я могу получить доступ к атрибутам каталога, чтобы найти самые новые созданные? Спасибо

Ответы на вопрос(4)

import os
import glob
for dir in glob.glob('*'):
  if os.path.isdir(dir):
    print dir,":",os.path.getctime(dir)
 11 июн. 2012 г., 18:47
Спасибо! но вопрос ОП заключался в том, как найти атрибуты каталогов (время создания) с конечной целью их сортировки. Таким образом я ответил на его вопрос. Второй ответ идет еще дальше, чтобы отсортировать. Я бы предпочел держать их отдельно
 11 июн. 2012 г., 18:54
Я думаю, я просто запутался, как это решает проблему, когда первая строка проблемыI'm looking for a method that can find the newest directory created inside another directory.
 11 июн. 2012 г., 18:41
@jessh Ваш второй ответ в основном дублирует этот ответ с добавленной сортировкой. Лучше всего редактировать существующие ответы, если вы просто улучшаете их.
 11 июн. 2012 г., 18:31
Это находит самый новый?
 nam11 июн. 2012 г., 18:29
Спасибо за Ваш ответ!

os.walk и примеры в документах для простого способа получить каталоги.

root, dirs, files = os.walk('/your/path').next()

Тогда проверьтеos.path.getctime который в зависимости от вашей ОС может быть время создания или модификации. Если вы еще не знакомы с ним, вы также можете прочитать оos.path.join.

os.path.getctime(path) Return the system’s ctime which, on some systems (like Unix) is the time of the last change, and, on others (like Windows), is the creation time for path.

max((os.path.getctime(os.path.join(root, f)), f) for f in dirs)
Решение Вопроса
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]

Update:

Может быть, еще несколько объяснений:

[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()это встроенная функция. Некоторые примерыВот

Код, который я показал, сортирует все элементы в dirs по os.path.getctime (ELEMENT) в обратном порядке. Результат снова список. К которому, конечно, можно получить доступ, используя[index] синтаксис инарезка

 12 июн. 2012 г., 12:55
@HOAINAMNGUYEN Я обновил ответ. Я надеюсь, что теперь вам более понятно, что делает код.
 nam12 июн. 2012 г., 09:23
Могу ли я использовать listdir () вместо listdir (".")?
 nam12 июн. 2012 г., 09:58
'sorted (dirs, key = lambda x: os.path.getctime (x), reverse = True) [: 1] & apos; на самом деле отображать список правильно, поэтому я могу получить только первый элемент с помощью функции 'sorted (dirs, key = lambda x: os.path.getctime (x), reverse = True) [0] & apos; ?
 12 июн. 2012 г., 09:31
Нет, os.listdir принимает обязательный аргумент. "." просто ярлык для "текущего каталога" (Вы также можете использовать os.curdir вместо этого или, конечно, передать абсолютный / относительный путь к каталогу, который вас интересует)

которую я написал, чтобы вернуть имя самой новой директории:

#!/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')
 nam11 июн. 2012 г., 18:34
Можете ли вы объяснить строку lister = sorted (dirs.iteritems (), key = operator.itemgetter (1))?
 11 июн. 2012 г., 18:38
Конечно! В общем, я просто создаю словарь, в котором ключ - это имя каталога, а значение - время создания каталога. Затем я сортирую словарь по значениям, чтобы найти самый новый каталог. Кроме того, проверитьstackoverflow.com/questions/613183/…
 11 июн. 2012 г., 18:45
sorted () - встроенная функция. Поиск в Google для сортировки по Python дает вам документы и несколько других вопросов.docs.python.org/library/functions.html#sorted

Ваш ответ на вопрос