2016-09-12 4 views
-1

Я решил пойти на python для этого, потому что я в процессе обучения Python, поэтому я использую его над Powershell всякий раз, когда могу.Удалить каталоги старше X дней?

У меня есть теория для этого, но кажется, что os.stat не может взять список, а только строку или int. Прямо сейчас я просто печатаю, прежде чем идти и удалять вещи.

import os 
import time 

path = "\\\\path\\to\\videoroot\\" 
now = time.time() 
old = now - 1296000 

for root, dirs, files in os.walk(path, topdown=False): 
    if time.ctime(os.path.getmtime(dirs) < old: 
     print (dirs) 

сообщение Выход/ошибка:

return os.stat(filename).st_mtime 
    TypeError: argument should be string, bytes or integer, not list 
+1

Какая часть сообщения об ошибке не понятна? Вы передаете список вместо значения приемлемого типа (string, bytes, integer), как указано в сообщении. – Nicarus

+0

Не спрашивайте, почему, я спрашиваю, как, но благодарю вас за ваш менее конструктивный вклад. –

ответ

6

Ваша проблема кода является то, что вы передаете dirs к os.path.getmtime() и dirs является list, как указано в documentation для os.walk

Таким образом, вы можете Адрес:

import os 
import time 

path = "\\\\path\\to\\videoroot\\" 
now = time.time() 
old = now - 1296000 

for root, dirs, files in os.walk(path, topdown=False): 
    for _dir in dirs: 
     if time.ctime(os.path.getmtime(_dir) < old: 
      print (_dir) 
+0

ах, я вижу, что вы там делаете. Я отдам его. Спасибо! –

+1

Крис: см. [_Как принимаем ответную работу? _] (Http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) – martineau

+0

@martimeai, как правило, вы должны его проверить отвечал вашим потребностям. В этом случае он это сделал, его ответ был принят. –

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