2013-10-18 84 views
0

我有一台服务器,我需要从该服务器中删除特定文件夹中的文件和文件夹,我想每3个月删除一次,我已经知道如何做到这一点使用crontab和python,事情是,我只想删除文件或文件夹,如果它是3个月以上或更多。比较上次修改时间和当前时间,然后删除文件和文件夹

我使用删除文件和文件夹的是这样做的Python代码:

import os 
import shutil 
path = '/path/to/folder' 

for root, dirs, files in os.walk(path): 
     for f in files: 
       os.unlink(os.path.join(root, f)) 
     for d in dirs: 
       shutil.rmtree(os.path.join(root,d)) 

我现在想要的是让每一个文件和文件夹一个月,这是最后一次修改,并比较这对当前的月份进入,然后删除它,当且仅当它的'年龄'大于或等于3个月。

任何帮助?

回答

0

所以,这是答案。

而不是删除超过3个月的文件,我将删除6个月以前的文件和文件夹。

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
import os, glob, shutil, time, datetime 
path = glob.glob('/home/piratinha/*') 
now = time.time() 
now_str = datetime.datetime.fromtimestamp(now).strftime('%d-%m-%Y %H:%M:%S') 
print now_str 
for f in path: 
    if os.stat(f).st_mtime < now - (6 * 30 * 86400): 
     if os.path.isfile(f): 
      print "Removendo", f 
      os.remove(f) 
      print "Arquivo Removido" 
     else: 
      print "Removendo", f 
      shutil.rmtree(f) 
      print "Pasta Removida" 
else: 
    print "Todos os arquivos e pastas são mais novos do que 6 meses." 

print now_str 

BR,

REDCODE

0

正常的方式做,这对POSIX是文件:

find path -mtime +90 -a -type f -a -exec rm "{}" \; 

和文件夹:

find path -mtime +90 -a -type d -a -exec rm -r "{}" \; 

但是,当然,你需要小心任何RM -r!如果感兴趣的文件夹不是嵌套的,这是更安全的:

find path -mtime +90 -a -type d -a -exec rmdir "{}" \; 

在python中,shell exec为此。它不是一个跨平台的纯Python解决方案。

相关问题