python删除过期log文件操作实例解析
作者:y2701310012 发布时间:2021-02-03 18:29:36
本文研究的主要是python删除过期log文件的相关内容,具体介绍如下。
1. 用Python遍历目录
os.walk方法可以很方便的得到目录下的所有文件,会返回一个三元的tupple(dirpath, dirnames, filenames),其中,dirpath是代表目录的路径,dirnames是一个list,包含了dirpath下的所有子目录的名字,filenames是一个list,包含了非目录的文件,如果需要得到全路径,需要使用os.path.join(dirpath,name).例如test目录的结构为:
test------------file_c
|
-----------dir_a1/file_a1
| |
| -------dir_a2/file_a2
|
------------dir_b1/file_b1
那么使用如下代码:
import os
for i in os.walk('test'):
print i
结果为:
('test', ['dir_a1', 'dir_b1'], ['file_c1'])('test/dir_a1', ['dir_a2'], ['file_a1'])('test/dir_a1/dir_a2', [], ['file_a2'])('test/dir_b1', [], ['file_b1'])
要得到带路径的文件,则可以这样操作:
for i in os.walk('test'):
#print i
for j in i[2]:
os.path.join(i[0],j)
结果为:
'test/file_c1'
'test/dir_a1/file_a1'
'test/dir_a1/dir_a2/file_a2'
'test/dir_b1/file_b1'
当然,也可以利用os.path.isdir判断来递归操作得到目录中的文件:
def walk(dir):
ret = []
dir = os.path.abspath(dir)
for file in [file for file in os.listdir(dir) if not file in [".",".."]]:
nfile = os.path.join(dir,file)
if os.path.isdir(nfile):
ret.extend( walk(nfile) )
else:
ret.append( nfile )
return ret
2. 排除需要保留文件
根据特定名称的文件以及文件更改时间来判断是否需要删除,os.path.getmtime(file)来得到文件最后改变的时间,当然除了诸如“XXX" in file的方法来判断文件名外,也可以采用正则表达式的方法。
def shouldkeep(file):
if '.py' in file:
return True
elif '.conf' in file:
return True
elif 'current' in file:
return True
elif 'rtb' in file and datetime.datetime.fromtimestamp( os.path.getmtime(file) ) > datetime.datetime.now() - datetime.timedelta(3):
return True
# the log webdebug/popterr/webaccess/controller_slow/game/checking_social which are modified 6 day ago should be removed
elif datetime.datetime.fromtimestamp( os.path.getmtime(file) ) < \
datetime.datetime.now() - datetime.timedelta(6)\
and ('webdebug' in file \
or 'potperr' in file\
or 'webaccess' in file\
or 'controller_slow' in file\
or 'game.' in file\
or 'checkin_social' in file\
):
return False
elif datetime.datetime.fromtimestamp( os.path.getmtime(file) ) < \
datetime.datetime.now() - datetime.timedelta(2)\
and ('queue.master.info' in file):
return False
elif datetime.datetime.fromtimestamp( os.path.getmtime(file) ) > \
datetime.datetime.now() - datetime.timedelta(6):
return True
else:
return False
files = walk('/var/server/log')
for i in files:
if not shouldkeep(i):
print i, datetime.datetime.fromtimestamp( os.path.getmtime(i) )
os.remove( i )
将该脚本用crontab定时每天执行一次,即可定期每天清理/var/server/log下的过期文件。
来源:http://blog.csdn.net/y2701310012/article/details/41783045


猜你喜欢
- Web框架把我们从WSGI中拯救出来了。现在,我们只需要不断地编写函数,带上URL,就可以继续Web App的开发了。但是,Web App不
- 这次主要是爬了京东上一双鞋的相关评论:将数据保存到excel中并可视化展示相应的信息主要的python代码如下:文件1#将excel中的数据
- 可试试下面这个方法,但要保证在FORM中使用的Input Name都和数据库中使用的是一样的:upfiles.asp<% &
- 在Oracle中inset里面的内容如果中有'&'号,有可能会插入失败,下面介绍一下方法:1.在pl/sql中:&a
- 对于网站设计者而言,时常处理大批量的文件是难免的,特别是图片和一些文本文本文件,更是经常处理。而由于网站大量文件的关系,对于同类
- C#连接数据库:Connection对象1.Connection对象概述Connection对象是一个连接对象,主要功能是建立与物理数据库的
- 1.软件环境??Windows10 教育版64位Python 3.6.3PyAV 8.0.32.问题描述??在提取视频文件的关键内容时,手动
- 在开发中有需求在详情显示里外键字段内容,并且添加按钮弹窗内容,以及按钮跳转内容。以前并没有做过相似的开发,我们的后台是xadmin,当时正在
- 本文实例为大家分享了JavaScript实现简易购物车的具体代码,供大家参考,具体内容如下代码:<!DOCTYPE html>&
- 问题场景有时候,在编写一段http接口请求程序时,发现代码中的header头和请求体中都是原网页中一样,但是,在实际请求时,接口却返回404
- Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D。但是目前这项技术还
- 【摘要】 性能 首先,FCKEDITOR的性能是非常好的,用户只需很少的时间就可以载入FCKEDITOR所需文件.对于其他在线编辑器来说,这
- 本人刚开始学习python,看了一段时间视频教程之后,决定做一个小游戏来巩固一下知识点,就做了一个文字版飞行棋,暂不具备图形界面。把代码贴出
- 一、conn.asp<% '@Language="VBSCRIPT" CO
- python主要是通过thread和threading这两个模块来实现多线程支持。python的thread模块是比較底层的模块,pytho
- 前言最近有网友私信我,问如何把多张图片合成一张马赛克图片的样子说是女儿从出生到现在,所有的照片,大概有上百张,所以想使用这些照片合成一张,当
- 1.VsCode官方插件地址:https://marketplace.visualstudio.com/vscodehttp://code.
- 1、基本语法SELECT查询列表FROM表名WHERE筛选表达式;2、按条件表达式筛选条件运算符:>,<,=,!=,<&g
- 1.H5 download属性function downFile(content, filename) { // 创建隐藏的可下
- 1.在pycharm下安装scrapy函数库2.将安装好scrapy函数库下的路径配置到系统path的环境变量中3.打开cmd终端输入:sc