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 相关文章推荐
python关闭windows进程的方法
Apr 18 Python
python 中的divmod数字处理函数浅析
Oct 17 Python
python+flask实现API的方法
Nov 21 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
如何通过雪花算法用Python实现一个简单的发号器
Jul 03 Python
python对绑定事件的鼠标、按键的判断实例
Jul 17 Python
Python中类似于jquery的pyquery库用法分析
Dec 02 Python
Python逐行读取文件内容的方法总结
Feb 14 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
python之PySide2安装使用及QT Designer UI设计案例教程
Jul 26 Python
Python绘画好看的星空图
Mar 17 Python
总结三种用 Python 作为小程序后端的方式
May 02 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下打开phpMyAdmin出现403错误的问题解决方法
2013/05/23 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
PHP多种序列化/反序列化的方法详解
2017/06/23 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
PHP迭代与递归实现无限级分类
2017/08/28 PHP
php实现图片压缩处理
2020/09/09 PHP
jQuery中的.bind()、.live()和.delegate()之间区别分析
2011/06/08 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
js动态添加删除,后台取数据(示例代码)
2013/11/25 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
node.js中的console用法总结
2014/12/15 Javascript
jQuery获取URL请求参数的方法
2015/07/18 Javascript
js判断请求的url是否可访问,支持跨域判断的实现方法
2016/09/17 Javascript
AngularJS之自定义服务详解(factory、service、provider)
2017/04/14 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
web前端vue实现插值文本和输出原始html
2018/01/19 Javascript
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
Vue.js计算机属性computed和methods方法详解
2019/10/12 Javascript
Python实现模拟登录及表单提交的方法
2015/07/25 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
PyQt5的安装配置过程,将ui文件转为py文件后显示窗口的实例
2019/06/19 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
Python面向对象编程基础实例分析
2020/01/17 Python
美国最大的在线寄售和旧货店:Swap.com
2018/08/27 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
学校岗位设置方案
2014/01/16 职场文书
《诚实与信任》教学反思
2014/04/10 职场文书
2014年职称评定工作总结
2014/11/26 职场文书
工会工作个人总结
2015/03/03 职场文书
工程部岗位职责范本
2015/04/11 职场文书
道歉情书大全
2015/05/12 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
python人工智能human learn绘图可创建机器学习模型
2021/11/23 Python