python实现的文件夹清理程序分享


Posted in Python onNovember 22, 2014

使用:

foldercleanup.py -d 10 -k c:\test\keepfile.txt c:\test

表示对c:\test目录只保留最近10天的子文件夹和keepfile.txt中指定的子文件夹。

代码:

import os

import os.path

import datetime

  

def getOption():

  from optparse import OptionParser

  

  des   = "clean up the folder with some options"

  prog  = "foldercleanup"

  ver   = "%prog 0.0.1"

  usage = "%prog [options] foldername"

  

  p = OptionParser(description=des, prog=prog, version=ver, usage=usage,add_help_option=True)

  p.add_option('-d','--days',action='store',type='string',dest='days',help="keep the subfolders which are created in recent %days% days")

  p.add_option('-k','--keepfile',action='store',type='string',dest='keepfile',help="keep the subfolders which are recorded in text file %keepfile% ")

  options, arguments = p.parse_args()

  

  if len(arguments) != 1:

    print("error: must input one directory as only one parameter ")

    return

  

  return options.days, options.keepfile, arguments[0] 
 

def preCheckDir(dir):

  if(not os.path.exists(dir)):

    print("error: the directory your input is not existed")

    return

  if(not os.path.isdir(dir)):

    print ("error: the parameter your input is not a directory")

    return

    

  return os.path.abspath(dir)

  

def isKeepByDay(dir, day):

  indays = False

  if( day is not None) :

    t = os.path.getctime(dir)

    today = datetime.date.today()

    createdate = datetime.date.fromtimestamp(t)

    indate = today - datetime.timedelta(days = int(day))

    print (createdate)

    if(createdate >= indate):

      indays = True

  print (indays)

  return indays

  

def isKeepByKeepfile(dir, keepfile):

  needkeep = False

  print (dir)

  if (keepfile is not None):

    try :

      kf = open(keepfile,"r")

      for f in kf.readlines():

        print (f)

        if (dir.upper().endswith("\\" + f.strip().upper())):

          needkeep = True

      kf.close()

    except:

      print ("error: keep file cannot be opened")

  print(needkeep)

  return needkeep

    

def removeSubFolders(dir, day, keepfile):

  subdirs = os.listdir(dir)

  for subdir in subdirs:

    subdir = os.path.join(dir,subdir)

    if ( not os.path.isdir(subdir)):

      continue

    print("----------------------")

    if( (not isKeepByDay(subdir, day))and (not isKeepByKeepfile(subdir, keepfile))):

      print("remove subfolder: " + subdir)

      import shutil

      shutil.rmtree(subdir,True)

    

def FolderCleanUp():

  (day, keepfile, dir) = getOption()

  dir = preCheckDir(dir)

  if dir is None:

    return

  removeSubFolders(dir,day,keepfile)

  

if __name__=='__main__':

  FolderCleanUp()

对目录下保留最后的zip文件:

def KeepLastNumZips(num)

    def extractTime(f):

        return os.path.getctime(f)
    zipfiles = [os.path.join(zipdir, f)

                for f in os.listdir(zipdir)

                if os.path.splitext(f)[1] == ".zip"]

    if len(zipfiles) > num:

        zipfiles.sort(key=extractTime, reverse=True)

        for i in range(num, len(zipfiles)):

            os.remove(zipfiles[i])
Python 相关文章推荐
tornado捕获和处理404错误的方法
Feb 26 Python
Python比较文件夹比另一同名文件夹多出的文件并复制出来的方法
Mar 05 Python
Python的Bottle框架中返回静态文件和JSON对象的方法
Apr 30 Python
Python构建XML树结构的方法示例
Jun 30 Python
python实现自动网页截图并裁剪图片
Jul 30 Python
python flask实现分页的示例代码
Aug 02 Python
对Python3之方法的覆盖与super函数详解
Jun 26 Python
如何更优雅地写python代码
Jul 02 Python
Python命令行click参数用法解析
Dec 19 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
Python接口自动化测试的实现
Aug 28 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
Dec 10 Python
Python判断操作系统类型代码分享
Nov 22 #Python
python logging类库使用例子
Nov 22 #Python
Python中模拟enum枚举类型的5种方法分享
Nov 22 #Python
Python读写Excel文件方法介绍
Nov 22 #Python
Python中的包和模块实例
Nov 22 #Python
Python动态加载模块的3种方法
Nov 22 #Python
收集的几个Python小技巧分享
Nov 22 #Python
You might like
php使用parse_url和parse_str解析URL
2015/02/22 PHP
PHP多文件上传实例
2015/07/09 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
jQuery div层的放大与缩小简单实现代码
2013/03/28 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
JavaScript中创建字典对象(dictionary)实例
2015/03/31 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
Canvas实现动态的雪花效果
2017/02/13 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
使用vuex的state状态对象的5种方式
2018/04/19 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
vue.js使用v-pre与v-html输出HTML操作示例
2018/07/07 Javascript
jquery中为什么能用$操作
2019/06/18 jQuery
vue源码nextTick使用及原理解析
2019/08/13 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
python版学生管理系统
2018/01/10 Python
Python最小二乘法矩阵
2019/01/02 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python 实现学生信息管理系统的示例
2020/11/28 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
餐饮收银员岗位职责
2014/02/07 职场文书
经理聘任证明
2015/03/02 职场文书
2015年第31个教师节致辞
2015/07/31 职场文书
导游词之南京莫愁湖公园
2019/11/13 职场文书
CSS3实现指纹特效代码
2022/03/17 HTML / CSS