python删除过期log文件操作实例解析


Posted in Python onJanuary 31, 2018

本文研究的主要是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下的过期文件。

总结

以上就是本文关于python删除过期log文件操作实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python中使用不同编码读写txt文件详解
May 28 Python
python内置函数:lambda、map、filter简单介绍
Nov 16 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
python处理DICOM并计算三维模型体积
Feb 26 Python
python 随机森林算法及其优化详解
Jul 11 Python
Django实现跨域的2种方法
Jul 31 Python
Python Sphinx使用实例及问题解决
Jan 17 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
教你如何用python操作摄像头以及对视频流的处理
Oct 12 Python
浅谈matplotlib默认字体设置探索
Feb 03 Python
Python实现简单的俄罗斯方块游戏
Sep 25 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
Jan 31 #Python
使用Python制作微信跳一跳辅助
Jan 31 #Python
python模块之paramiko实例代码
Jan 31 #Python
Python进度条实时显示处理进度的示例代码
Jan 30 #Python
Python3生成手写体数字方法
Jan 30 #Python
python字符串的方法与操作大全
Jan 30 #Python
Python实现带参数与不带参数的多重继承示例
Jan 30 #Python
You might like
分享一下贝贝成长进度的php代码
2012/09/14 PHP
PHP Hash算法:Times33算法代码实例
2015/05/13 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PDO::exec讲解
2019/01/28 PHP
对联广告js flash激活
2006/10/19 Javascript
16个最流行的JavaScript框架[推荐]
2011/05/29 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
node.js中的forEach()是同步还是异步呢
2015/01/29 Javascript
莱鸟介绍javascript onclick事件
2016/01/06 Javascript
jQuery基础知识点总结(DOM操作)
2016/06/01 Javascript
BootStrap tab选项卡使用小结
2020/08/09 Javascript
详解如何使用webpack打包JS
2018/06/21 Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
2018/10/17 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
2019/07/29 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
浅谈Python中重载isinstance继承关系的问题
2018/05/04 Python
Python如何获得百度统计API的数据并发送邮件示例代码
2019/01/27 Python
django ajax发送post请求的两种方法
2020/01/05 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
python3 re返回形式总结
2020/11/20 Python
聚美优品陈欧广告词
2014/03/14 职场文书
致共产党员倡议书
2014/04/16 职场文书
经济国贸专业求职信
2014/06/18 职场文书
音乐学专业求职信
2014/07/22 职场文书
最感人的道歉情书
2015/05/12 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
如何写通讯稿
2015/07/22 职场文书
python实现简单区块链结构
2021/04/25 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android
Python OpenCV形态学运算示例详解
2022/04/07 Python