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计算对角线有理函数插值的方法
May 07 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
python爬虫之xpath的基本使用详解
Apr 18 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
python pandas实现excel转为html格式的方法
Oct 23 Python
Python实现计算对象的内存大小示例
Jul 10 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
Mar 24 Python
Python try except异常捕获机制原理解析
Apr 18 Python
如何在Windows中安装多个python解释器
Jun 16 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
Django集成富文本编辑器summernote的实现步骤
May 31 Python
Python 图片添加美颜效果
Apr 28 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
香妃
2021/03/03 冲泡冲煮
获得Google PR值的PHP代码
2007/01/28 PHP
过滤掉PHP数组中的重复值的实现代码
2011/07/17 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
2017/05/19 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
5分钟理解JavaScript中this用法分享
2013/11/09 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
2017/07/21 Javascript
js下拉菜单生成器dropMenu使用方法详解
2017/08/01 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
对Python使用mfcc的两种方式详解
2019/01/09 Python
python输出pdf文档的实例
2020/02/13 Python
Python实现ATM系统
2020/02/17 Python
Python猜数字算法题详解
2020/03/01 Python
详解Pycharm出现out of memory的终极解决方法
2020/03/03 Python
Python实现自动装机功能案例分析
2020/10/22 Python
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
高中生学习总结的自我评价范文
2013/10/13 职场文书
篮球比赛策划方案
2014/06/05 职场文书
优秀团员事迹材料2000字
2014/08/20 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
作风整顿剖析材料
2014/09/30 职场文书
教师自查自纠工作情况报告
2014/10/29 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
个人工作总结范文2014
2014/11/07 职场文书
银行员工考核评语
2014/12/31 职场文书
2015年世界水日活动总结
2015/02/09 职场文书
团拜会主持词
2015/07/04 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书