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 getopt 参数处理小示例
Jun 09 Python
python通过pil模块获得图片exif信息的方法
Mar 16 Python
Python3中的真除和Floor除法用法分析
Mar 16 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
Pytorch入门之mnist分类实例
Apr 14 Python
influx+grafana自定义python采集数据和一些坑的总结
Sep 17 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
python基于FTP实现文件传输相关功能代码实例
Sep 28 Python
python实现感知机模型的示例
Sep 30 Python
利用Python实现最小二乘法与梯度下降算法
Feb 21 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+AJAX聊天程序[聊天室]提供下载
2007/07/21 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
网页整体变灰白色(兼容各浏览器)实例
2013/04/21 Javascript
js如何取消事件冒泡
2013/09/23 Javascript
JavaScript lastIndexOf方法入门实例(计算指定字符在字符串中最后一次出现的位置)
2014/10/17 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
如何在VUE中使用vue-awesome-swiper
2021/01/04 Vue.js
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python ElementTree 基本读操作示例
2009/04/09 Python
python批量生成本地ip地址的方法
2015/03/23 Python
python读取二进制mnist实例详解
2017/05/31 Python
python版大富翁源代码分享
2018/11/19 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
Numpy 理解ndarray对象的示例代码
2020/04/03 Python
python实现mean-shift聚类算法
2020/06/10 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
法制宣传实施方案
2014/03/13 职场文书
体操比赛口号
2014/06/10 职场文书
铣床操作工岗位职责
2014/06/13 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫