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对列表排序的方法实例分析
May 16 Python
在Django的通用视图中处理Context的方法
Jul 21 Python
Python程序中用csv模块来操作csv文件的基本使用教程
Mar 03 Python
python爬虫爬取淘宝商品信息(selenum+phontomjs)
Feb 24 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
详解【python】str与json类型转换
Apr 29 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
解决python执行较大excel文件openpyxl慢问题
May 15 Python
Keras设定GPU使用内存大小方式(Tensorflow backend)
May 22 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 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来自动调用不同服务器上的flash
2006/10/09 PHP
PHP中使用SimpleXML检查XML文件结构实例
2015/01/07 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
php实时倒计时功能实现方法详解
2017/02/27 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
Prototype使用指南之array.js
2007/01/10 Javascript
调整小数的格式保留小数点后两位
2014/05/14 Javascript
Jquery判断radio、selelct、checkbox是否选中及获取选中值方法总结
2015/04/15 Javascript
浅谈Sublime Text 3运行JavaScript控制台
2016/06/06 Javascript
Vue.js实现拖放效果的实例
2016/09/30 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
2017/08/18 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
swiper.js插件实现pc端文本上下滑动功能示例
2018/12/03 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
js实现三角形粒子运动
2020/09/22 Javascript
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
Python获取任意xml节点值的方法
2015/05/05 Python
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
python脚本设置系统时间的两种方法
2016/02/21 Python
解决Linux系统中python matplotlib画图的中文显示问题
2017/06/15 Python
python3实现基于用户的协同过滤
2018/05/31 Python
python+opencv实现霍夫变换检测直线
2020/10/23 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
Django日志及中间件模块应用案例
2020/09/10 Python
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
面向对象概念面试题(.NET)
2016/11/04 面试题
医院总经理职责
2013/12/26 职场文书
新春联欢会主持词
2014/03/24 职场文书
新店开张宣传语
2015/07/13 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
python基础之while循环语句的使用
2021/04/20 Python
Python中time与datetime模块使用方法详解
2022/03/31 Python