python磁盘垃圾文件清理器实验_python磁盘垃圾文件清理器实验_python实现的文件夹清理程序分享...

这是一个使用Python编写的磁盘文件夹清理程序,能够根据用户设定的天数保留最近创建的子文件夹,并根据指定的文本文件保留特定子文件夹。程序首先通过 getopt 模块处理命令行参数,然后检查目录是否存在且为有效路径。接着判断子文件夹是否在指定天数内创建或在文本文件记录中,最后删除不符合条件的子文件夹。此外,还包含了一个保留最近若干个ZIP文件的辅助功能。
摘要由CSDN通过智能技术生成

使用:

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])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值