2015-04-16 2 views
3

Я пытаюсь получить последнюю дату и время изменения каталога. при этом я хочу включить и последнюю измененную дату подкаталогов.Получите последнюю измененную дату каталога (включая подкаталоги) с помощью Python?

Я мог бы найти некоторые темы, связанные с этим вопросом. (How to get file creation & modification date/times in Python?), но все они дают последнее измененное время корневого каталога без учета подкаталогов.

import os.path, time 
print "last modified: %s" % time.ctime(os.path.getmtime(file)) 
print "created: %s" % time.ctime(os.path.getctime(file)) 

Эти строки кода дают последнее измененное время корневого каталога без учета подкаталогов. Пожалуйста, помогите мне в этом.

+0

Что вы подразумеваете под "include"? Вы хотите «список» раз, по одному в подкаталоге? Или вы хотите, чтобы самое последнее время в каталоге иерархии каталогов? –

+0

Извините за путаницу, я хочу, чтобы самое последнее время в каталоге иерархии каталогов? – user4k

+1

Затем вы должны пройти эту иерархию каталогов (см. 'Os.walk()'), собирая время по моменту. Выберите самую последнюю с помощью 'max()'. Я создам пример, если вам это нужно. –

ответ

8

Это должно делать то, что вы спросите:

import os 
import time 

print time.ctime(max(os.stat(root).st_mtime for root,_,_ in os.walk('/tmp/x'))) 

Но я вижу, вы используете os.path.getmtime(). Поэтому вы, вероятно, ищете следующее:

print time.ctime(max(os.path.getmtime(root) for root,_,_ in os.walk('/tmp/x'))) 
+0

Удивительно, что работает. спасибо за помощь вовремя! – user4k

+0

Не делает ли linux этот бухгалтерский учет? Я думал, что время модификации каталога было обновлено с его дочерними элементами. – user48956

+0

Нет, временное время каталога отражает изменения в файле каталога (т. Е. Добавления и удаления записей). Так/tmp/x обновляется при создании /tmp/x/foo.txt, но не тогда, когда /tmp/x/y/foo.txt. (И, конечно,/tmp/x также не обновляется, когда /tmp/x/foo.txt просто модифицируется.) –

Смежные вопросы