python实现的文件夹清理程序分享
admin
2023-07-31 02:13:26
0

使用:

复制代码 代码如下:
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])

相关内容

热门资讯

500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
python绘图库Matplo... 本文简单介绍了Python绘图库Matplotlib的安装,简介如下: matplotlib是pyt...
Prometheus+Graf... 一,Prometheus概述 1,什么是Prometheus?Prometheus是最初在Sound...