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 相关文章推荐
Cython 三分钟入门教程
Sep 17 Python
python异步任务队列示例
Apr 01 Python
黑科技 Python脚本帮你找出微信上删除你好友的人
Jan 07 Python
Python中optparser库用法实例详解
Jan 26 Python
python实现多线程行情抓取工具的方法
Feb 28 Python
实例介绍Python中整型
Feb 11 Python
python 用户交互输入input的4种用法详解
Sep 24 Python
python实现while循环打印星星的四种形状
Nov 23 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
python如何从键盘获取输入实例
Jun 18 Python
pytorch 多分类问题,计算百分比操作
Jul 09 Python
详解Python模块化编程与装饰器
Jan 16 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文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战一)
2013/08/21 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
2015/12/17 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
2015/12/29 Javascript
JavaScript实现的MD5算法完整实例
2016/02/02 Javascript
详解JavaScript的AngularJS框架中的作用域与数据绑定
2016/03/04 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
Vue 的 v-model用法实例
2020/11/23 Vue.js
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
django创建自定义模板处理器的实例详解
2017/08/14 Python
python针对excel的操作技巧
2018/03/13 Python
Python实现将数据写入netCDF4中的方法示例
2018/08/30 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Python3 元组tuple入门基础
2020/02/09 Python
Python多线程的退出控制实现
2020/08/10 Python
如何在存储过程中使用Loop
2016/01/05 面试题
用C#语言写出在本地创建一个UDP接收端口的具体过程
2016/02/22 面试题
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
安全生产宣传标语
2014/06/06 职场文书
小学班主任自我评价
2015/03/11 职场文书
工程部岗位职责范本
2015/04/11 职场文书
详解缓存穿透击穿雪崩解决方案
2021/05/28 Redis
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS