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代码检查工具pylint 让你的python更规范
Sep 05 Python
Python 文件和输入输出小结
Oct 09 Python
Python中input和raw_input的一点区别
Oct 21 Python
python urllib urlopen()对象方法/代理的补充说明
Jun 29 Python
tensorflow 获取模型所有参数总和数量的方法
Jun 14 Python
Python tkinter label 更新方法
Oct 11 Python
Python中垃圾回收和del语句详解
Nov 15 Python
tensorflow自定义激活函数实例
Feb 04 Python
Python递归实现打印多重列表代码
Feb 27 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
jupyter notebook 增加kernel教程
Apr 10 Python
浅谈Python3中datetime不同时区转换介绍与踩坑
Aug 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操作文件方法问答
2007/03/16 PHP
php更新mysql后获取影响的行数发生异常解决方法
2013/03/28 PHP
THINKPHP2.0到3.0有哪些改进之处
2015/01/04 PHP
学习PHP的数组总结【经验】
2016/05/05 PHP
PHP实现二维数组按某列进行排序的方法
2016/11/18 PHP
js AspxButton的客户端操作
2009/06/26 Javascript
按下Enter焦点移至下一个控件的实现js代码
2013/12/11 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
2013/12/31 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
Vue实现table上下移动功能示例
2019/02/21 Javascript
ES6 Promise对象的应用实例分析
2019/06/27 Javascript
Jquery高级应用Deferred对象原理及使用实例
2020/05/28 jQuery
vue路由切换时取消之前的所有请求操作
2020/09/01 Javascript
vue实现选中效果
2020/10/07 Javascript
wxPython中文教程入门实例
2014/06/09 Python
Python 实现选择排序的算法步骤
2018/04/22 Python
详解Python if-elif-else知识点
2018/06/11 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
python实现爬虫抓取小说功能示例【抓取金庸小说】
2019/08/09 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
Python astype(np.float)函数使用方法解析
2020/06/08 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
js实现弹框效果
2021/03/24 Javascript
优秀求职信范文分享
2013/12/19 职场文书
学校教师安全责任书
2014/07/23 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
高三物理教学反思
2016/02/20 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书