2020年9月8日 07:01 by wst
python运维随着时间的增加,日志文件越来越多,所占空间也越来越大。
如果使用shell命令进行删除,又不熟悉,只好采用python操作。
不过想想也没啥,都是脚本语言嘛,python操作也不算笨!
运行时有两个参数:path--要删除的目录,days--删除多少天前的文件。如:
deepinwst@Dell:~$ python d.py tjava 3
删除文件 tjava/StudyEnglish.java 成功
删除文件 tjava/StudyEnglish.class 成功
删除文件 tjava/HelloWorld.java 成功
删除文件 tjava/HelloWorld.class 成功
还可以设置不删除的文件名,在代码中设置EXT的值即可。
具体代码(d.py)如下:
#!/usr/bin/env python
# -*-coding=utf8 -*-
import time
import os
import sys
# 设置不过滤的文件列表
EXT = {"supervisord.pid", "supervisor.sock", "cron.log"}
def deletefile(path, n):
for eachfile in os.listdir(path):
filename = os.path.join(path, eachfile)
if os.path.isfile(filename):
if eachfile in EXT:
print(("File can not be delete:{}".format(eachfile)))
continue
lastmodifytime = os.stat(filename).st_mtime
# 设置删除多久之前的文件
endfiletime = time.time() - 3600 * 24 * n
if endfiletime > lastmodifytime:
os.remove(filename)
print("删除文件 %s 成功" % filename)
# 如果是目录则递归调用当前函数
elif os.path.isdir(filename):
deletefile(filename, n)
if __name__ == '__main__':
usage = "Usage:删除某个目录path下days天前的文件:\n python d.py path days"
if len(sys.argv) < 3:
print(usage)
exit(0)
path = sys.argv[1]
N = int(sys.argv[2])
deletefile(path, N)
如有问题,请留言!