python26实例[根据正则表达式来清理文件夹]


清除指定目录下的子文件, 只保留与给定的正则表达式匹配且最后创建的N个。

 

代码:

import  os
import  sys
import  re
import  shutil


def  cleanUp(dir, regrex, num):
  
if   not  os.path.exists(dir)  and   not  os.path.isdir(dir) : 
    
print   ' path %s is not existed or is not a directory '   % dir
    
return  False

  subfolderdict 
=  {}
  
for  subI  in  os.listdir(dir):
    sf 
=  os.path.join(dir,subI)
    
if  os.path.isdir(sf)  and   not  re.match(regrex, subI)  ==  None:
      sftime 
=  os.path.getctime(sf)
      subfolderdict[sftime] 
=  sf
    
else :
      
continue

  subfolders 
=  subfolderdict.keys()
  
if  len(subfolders)  ==  0 :  return  True
      
  subfolders.sort(reverse
= True)
  n 
=  int(num)
  
if  len(subfolders)  >=  n :
    subfolders 
=  subfolders[n:]
  
else return  True

  
if  len(subfolders)  ==  0 :  return  True
  
  
for  sftime  in  subfolders:
    sf 
=  subfolderdict[sftime]
    
# shutil.rmtree(sf)
     print   ' %s is removed '   %  sf

  
return  True


def  usage():
  usage 
=   ' \n\
  Function:\n\
    Clean Up subfolders in (dir), as a result :\n\
    just keep the subfolders which are matched with (regrex), \n\
    and the number of the subfoler cannot more then (num).\n\
  Usage:\n\
    python %s dir regrex num\n\
  
'   % sys.argv[0]
  
print  usage


if   __name__   ==   ' __main__ ' :
  
if  len(sys.argv)  ==   4  :
    cleanUp(sys.argv[
1 ],sys.argv[ 2 ],sys.argv[ 3 ])
  
else :
    usage()

 

完!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值