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实现socket客户端和服务端简单示例
Feb 24 Python
python实现读取命令行参数的方法
May 22 Python
Python中的推导式使用详解
Jun 03 Python
Django实现的自定义访问日志模块示例
Jun 23 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
Jun 23 Python
手把手教你python实现SVM算法
Dec 27 Python
Python实现的读写json文件功能示例
Jun 05 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
python 实现从高分辨图像上抠取图像块
Jan 02 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
python实现滑雪游戏
Feb 22 Python
pyspark 随机森林的实现
Apr 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php实现微信模板消息推送
2018/03/30 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
一个JS翻页效果
2007/07/23 Javascript
EXTJS FORM HIDDEN TEXTFIELD 赋值 使用value不好用的问题
2011/04/16 Javascript
JavaScript 放大镜 移动镜片效果代码
2011/05/09 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
IE网页js语法错误2行字符1、FF中正常的解决方法
2013/09/09 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
2017/07/12 jQuery
移动端效果之IndexList详解
2017/10/20 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python格式化字符串实例总结
2014/09/28 Python
python获取指定目录下所有文件名列表的方法
2015/05/20 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python中range()与xrange()用法分析
2016/09/21 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
python实现机器学习之多元线性回归
2018/09/06 Python
对python中词典的values值的修改或新增KEY详解
2019/01/20 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
淘宝店铺营销方案
2014/02/13 职场文书
保密工作责任书
2014/04/16 职场文书
美国留学经济担保书
2014/05/20 职场文书
生产车间管理制度
2015/08/04 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS