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函数学习笔记
Oct 07 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
使用pandas批量处理矢量化字符串的实例讲解
Jul 10 Python
Django Rest framework之认证的实现代码
Dec 17 Python
python3实现钉钉消息推送的方法示例
Mar 14 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
pytest中文文档之编写断言
Sep 12 Python
Python模块的定义,模块的导入,__name__用法实例分析
Jan 07 Python
python 异步async库的使用说明
May 04 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
Python基础教程,Python入门教程(超详细)
Jun 24 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数据库开发知多少
2006/10/09 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP实现克鲁斯卡尔算法实例解析
2014/08/22 PHP
php 浮点数比较方法详解
2017/05/05 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
基于jQuery的试卷自动排版系统实现代码
2011/01/06 Javascript
使用jquery实现IE下按backspace相当于返回操作
2014/03/18 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery超酷平面式时钟效果代码分享
2020/03/30 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
Javascript 跨域知识详细介绍
2016/10/30 Javascript
浅谈$_FILES数组为空的原因
2017/02/16 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
Vue数据双向绑定原理及简单实现方法
2018/05/18 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
在SSM框架下用laypage和ajax实现分页和数据交互的方法
2019/09/27 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
vue实现全屏滚动效果(非fullpage.js)
2020/03/07 Javascript
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
python正则表达式匹配[]中间为任意字符的实例
2018/12/25 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
基于Canvas+Vue的弹幕组件的实现
2019/07/23 HTML / CSS
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
机关单位人员学雷锋心得体会
2014/03/10 职场文书
仓库管理计划书
2014/05/04 职场文书
应届毕业生求职信范文
2014/05/08 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
博士生专家推荐信
2015/03/25 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
Java SSH 秘钥连接mysql数据库的方法
2021/06/28 Java/Android
JavaScript实现简单的音乐播放器
2022/08/14 Javascript