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基础教程之lambda表达式使用方法
Feb 12 Python
windows下python之mysqldb模块安装方法
Sep 07 Python
python批量修改文件编码格式的方法
May 31 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
Python+appium框架原生代码实现App自动化测试详解
Mar 06 Python
Python读写操作csv和excle文件代码实例
Mar 16 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
python中return不返回值的问题解析
Jul 22 Python
Python如何使用input函数获取输入
Aug 06 Python
理解Django 中Call Stack机制的小Demo
Sep 01 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
May 20 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 cli模式学习(PHP命令行模式)
2013/06/03 PHP
PHP生成自定义长度随机字符串的函数分享
2014/05/04 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
php数组键值用法实例分析
2015/02/27 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
JavaScript 不只是脚本
2007/05/30 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
jquery animate实现鼠标放上去显示离开隐藏效果
2013/07/21 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
解决checkbox的attr(checked)一直为undefined问题
2014/06/16 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
JS绘制微信小程序画布时钟
2016/12/24 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Pyhton中单行和多行注释的使用方法及规范
2016/10/11 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
符合语言习惯的 Python 优雅编程技巧【推荐】
2018/09/25 Python
python添加菜单图文讲解
2019/06/04 Python
python之拟合的实现
2019/07/19 Python
Python集合操作方法详解
2020/02/09 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
Snapfish爱尔兰:在线照片打印和个性化照片礼品
2018/09/17 全球购物
乌克兰珠宝大卖场:Zlato.ua
2020/09/27 全球购物
岗位职责的含义
2013/11/17 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
工厂见习报告范文
2014/10/31 职场文书
2014年建筑工作总结
2014/11/26 职场文书
粗暴解决CUDA out of memory的问题
2021/05/22 Python
Java实现注册登录跳转
2022/06/16 Java/Android