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连接mysql数据库示例(做增删改操作)
Dec 31 Python
Python的time模块中的常用方法整理
Jun 18 Python
Python备份目录及目录下的全部内容的实现方法
Jun 12 Python
Python随机数random模块使用指南
Sep 09 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
Python读取properties配置文件操作示例
Mar 29 Python
详解Django之admin组件的使用和源码剖析
May 04 Python
python实现转圈打印矩阵
Mar 02 Python
在python tkinter中Canvas实现进度条显示的方法
Jun 14 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
pytorch实现线性回归以及多元回归
Apr 11 Python
Python实现机器学习算法的分类
Jun 03 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
玛琪朵 Macchiato
2021/03/03 咖啡文化
jQuery获取json后使用zy_tmpl生成下拉菜单
2015/03/27 PHP
php调整服务器时间的方法
2015/04/03 PHP
WEB页子窗口(showModalDialog和showModelessDialog)使用说明
2009/10/25 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
jQuery中Ajax的get、post等方法详解
2015/01/20 Javascript
JS实现的简洁纵向滑动菜单(滑动门)效果
2015/10/19 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
JS实现禁止鼠标右键的功能
2016/10/15 Javascript
node.js的事件机制
2017/02/08 Javascript
NodeJs下的测试框架Mocha的简单介绍
2017/02/22 NodeJs
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
JS代码屏蔽F12,右键,粘贴,复制,剪切,选中,操作实例
2019/09/17 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
10招!看骨灰级Pythoner玩转Python的方法
2019/04/15 Python
详解python编译器和解释器的区别
2019/06/24 Python
python画双y轴图像的示例代码
2019/07/07 Python
关于Python Tkinter Button控件command传参问题的解决方式
2020/03/04 Python
Python Map 函数的使用
2020/08/28 Python
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
StringBuilder和String的区别
2015/05/18 面试题
设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
2014/12/30 面试题
吸烟检讨书2000字
2014/02/13 职场文书
大学生求职信
2014/06/17 职场文书
租房协议书
2014/09/12 职场文书
销售顾问工作计划书
2014/09/15 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
2014年保密工作总结
2014/11/22 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
2016年国培研修日志
2015/11/13 职场文书