2013-03-11 2 views
-2
a = '/mnt/task/a' 
b = '/mnt/task/b' 

Под a и b,
Есть некоторые папки с такими именами, как 201212194546921-6ab-45654545d-5445c
Как вы видите, имена папок состоят из вещей, как серийный номер, и дата, когда папка была сгенерирована.
Если я хочу удалить папки, которые были сгенерированы до определенного момента, как их найти и удалить
например. удалить папки до прошлой неделиудаления папки с питона сценариями

Может ли кто-нибудь здесь помочь мне с этим?

+1

оформления покупок [модуль ОС питона] (http://docs.python.org/2.7/library/os.html#module-os) попробовать что-то и обновить свой вопрос с каким-то кодом, когда вы застряли –

+0

И попытайтесь отформатировать свой вопрос немного лучше. Трудно читать. Приветствия. – wrgrs

+0

Вы хотите включить подпапки? – pradyunsg

ответ

0

Есть несколько модулей питона, которые могут помочь вам сделать это: os.walk(path) итерации по всем папкам на данном пути os.path.getctime(fileName) возврата даты создания файла. shutil.rmtree(folder) удаляет папку и ее содержимое

, если вы поместите их вместе, вы получите что-то вроде этого:

import os 
import time 
import shutil 

for folder ,subFolder, filenames in os.walk('/mnt/task/a'): 
    print folder , time.ctime(os.path.getctime(folder)) 

    if os.path.getctime(folder) < (time.time() - 60*60*24*7): 
     print 'deleting: ' , folder 
     #shutil.rmtree(folder) 
     while subFolder: 
      subFolder.pop() 

Примечание этот код удаляет папки, основываясь только на время создания файла !! Возможно, вам потребуется дополнительная логика, кроме даты файла.

+0

OP хочет использовать имя файла, а не время создания файла, хотя они служат для одной цели ... – pradyunsg

0

Предполагая, что папки, которые вы хотите удалить непосредственно в a или b:
Следующий код создает объект типа DateTime для каждой из папок, а затем использует разницу между датами, чтобы определить, какие папки для удаления.

import os, datetime, errno, stat, shutil 
a = 
b = 

date = '' 
ref = datetime.date(2013,12,20) 

def parse_name(fname): 
    '''Returns False when unsucessful, datatime.date() when successful''' 
    if len(fname) > 9: 
     try: 
      year = int(fname[:4]) 
      month = int(fname[4:6]) 
      day = int(fname[6:8]) 
      return datetime.date(year, month, day) 
     except ValueError,e: 
      return False 
    else: 
     return False 

f2remove = [] 
for dirc in (a,b): 
    for item in os.listdir(dirc): 
     if os.path.isdir(os.path.join(dirc,item)): 
      x = parse_name(item) 
      if x and (ref - x).days >= 0: 
       f2remove.append(os.path.join(dirc,item)) 

# --- deleting files --- # 
for filename in f2remove: 
    print 'removing', filename.split('\\')[-1] 
    shutil.rmtree(filename) 
Смежные вопросы