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 相关文章推荐
简单的编程0基础下Python入门指引
Apr 01 Python
python开发中module模块用法实例分析
Nov 12 Python
在centos7中分布式部署pyspider
May 03 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
Jan 23 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
python实现将文件夹内的每张图片批量分割成多张
Jul 22 Python
python实现字典嵌套列表取值
Dec 16 Python
python 抓取知乎指定回答下视频的方法
Jul 09 Python
用python批量解压带密码的压缩包
May 31 Python
浅谈Python数学建模之整数规划
Jun 23 Python
python获取字符串中的email
Mar 31 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
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
用php解析html的实现代码
2011/08/08 PHP
php数组函数序列之array_search()- 按元素值返回键名
2011/11/04 PHP
PHP整合七牛实现上传文件
2015/07/03 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
YII2 实现多语言配置的方法分享
2017/01/11 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
js数字输入框(包括最大值最小值限制和四舍五入)
2009/11/24 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
2014/06/02 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
javascript验证身份证号
2015/03/03 Javascript
TypeScript 学习笔记之基本类型
2015/06/19 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
jQuery实现动态控制页面元素的方法分析
2017/12/20 jQuery
一起写一个即插即用的Vue Loading插件实现
2019/10/31 Javascript
python实现批量下载新浪博客的方法
2015/06/15 Python
python的构建工具setup.py的方法使用示例
2017/10/23 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
基于Python下载网络图片方法汇总代码实例
2020/06/24 Python
python爬取youtube视频的示例代码
2021/03/03 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
MAC Cosmetics巴西官方网站:M·A·C彩妆
2019/04/18 全球购物
棉花姑娘教学反思
2014/02/15 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
简历中的自我评价应该这样写!
2019/07/12 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书
如何利用React实现图片识别App
2022/02/18 Javascript