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聊天程序实例代码分享
Nov 18 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
Python模拟百度登录实例详解
Jan 20 Python
Python的语言类型(详解)
Jun 24 Python
Python语言的变量认识及操作方法
Feb 11 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
基于python的BP神经网络及异或实现过程解析
Sep 30 Python
python循环嵌套的多种使用方法解析
Nov 29 Python
pytorch实现特殊的Module--Sqeuential三种写法
Jan 15 Python
Python threading.local代码实例及原理解析
Mar 16 Python
Python字符串函数strip()原理及用法详解
Jul 23 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实现获取及设置用户访问页面语言类
2014/09/24 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
php7 新增功能实例总结
2020/05/25 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
jquery如何把参数列严格转换成数组实现思路
2013/04/01 Javascript
jQuery 获取URL的GET参数值的小例子
2013/04/18 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
JavaScript中模拟实现jsonp
2015/06/19 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
解决vue项目运行npm run serve报错的问题
2020/10/26 Javascript
Python中使用不同编码读写txt文件详解
2015/05/28 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
Python正则表达式知识汇总
2017/09/22 Python
Django admin美化插件suit使用示例
2017/12/12 Python
Python 字符串与数字输出方法
2018/07/16 Python
python 实现批量xls文件转csv文件的方法
2018/10/23 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Python栈的实现方法示例【列表、单链表】
2020/02/22 Python
解析python 类方法、对象方法、静态方法
2020/08/15 Python
HTML5中Canvas与SVG的画图原理比较
2013/01/16 HTML / CSS
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
在C语言中"指针和数组等价"到底是什么意思?
2014/03/24 面试题
如何实现一个自定义类的序列化
2012/05/22 面试题
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
预备党员转正考核材料
2014/06/03 职场文书
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL