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 相关文章推荐
python3抓取中文网页的方法
Jul 28 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python实现通讯录功能
Feb 22 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
Python常见数字运算操作实例小结
Mar 22 Python
python实现比较类的两个instance(对象)是否相等的方法分析
Jun 26 Python
Python中的相关分析correlation analysis的实现
Aug 29 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
python基于socket函数实现端口扫描
May 28 Python
python 动态绘制爱心的示例
Sep 27 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 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
将文件夹压缩成zip文件的php代码
2009/12/14 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
2016/09/30 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
js子页面获取父页面数据示例
2014/05/15 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
Angular.js基础学习之初始化
2017/03/10 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
老生常谈JavaScript获取CSS样式的方法(兼容各浏览器)
2018/09/19 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python实现问号表达式(?)的方法
2013/11/27 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
PyTorch CNN实战之MNIST手写数字识别示例
2018/05/29 Python
Python实现多线程的两种方式分析
2018/08/29 Python
python批量从es取数据的方法(文档数超过10000)
2018/12/27 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
python实现大量图片重命名
2020/03/23 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
关于python的缩进规则的知识点详解
2020/06/22 Python
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
如何判断计算机可能已经中马
2013/03/22 面试题
会议开场欢迎词
2014/01/15 职场文书
搞笑获奖感言
2014/01/30 职场文书
高中军训感言500字
2014/02/24 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
2014年底工作总结
2014/12/15 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
详解Java实践之建造者模式
2021/06/18 Java/Android
详解Vue3使用axios的配置教程
2022/04/29 Vue.js