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中Continue语句的用法的举例详解
May 14 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python中实现精确的浮点数运算详解
Nov 02 Python
深入理解Django-Signals信号量
Feb 19 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python操作redis和mongoDB的方法
Dec 19 Python
利用keras使用神经网络预测销量操作
Jul 07 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
python Selenium 库的使用技巧
Oct 16 Python
Python实现简单猜数字游戏
Feb 03 Python
如何利用python实现列表嵌套字典取值
Jun 10 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安全编程之加密功能
2006/10/09 PHP
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php数据库操作model类(使用__call方法)
2016/11/16 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
CSS中简写属性要注意TRouBLe的顺序问题(避免踩坑)
2021/03/09 HTML / CSS
JS控件的生命周期介绍
2012/10/22 Javascript
jQuery设置与获取HTML,文本和值的简单实例
2014/02/26 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
超级简单的jquery操作表格方法
2014/12/15 Javascript
JQuery中Bind()事件用法分析
2015/05/05 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
JS实现超简洁网页title标题跑动闪烁提示效果代码
2015/10/23 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
有关JS中的0,null,undefined,[],{},'''''''',false之间的关系
2017/02/14 Javascript
Node.js使用NodeMailer发送邮件实例代码
2017/03/06 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
2017/09/30 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
layui实现数据分页功能
2019/07/27 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
js判断鼠标移入移出方向的方法
2020/06/24 Javascript
Python编程产生非均匀随机数的几种方法代码分享
2017/12/13 Python
Python对CSV、Excel、txt、dat文件的处理
2018/09/18 Python
使用Python的turtle模块画国旗
2019/09/24 Python
django model object序列化实例
2020/03/13 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
python实现猜单词游戏
2020/05/22 Python
如何通过命令行进入python
2020/07/06 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
日本乐天德国站:Rakuten.de
2019/05/16 全球购物
年终考核评语
2014/01/19 职场文书
环卫工作汇报材料
2014/10/28 职场文书
netty 实现tomcat的示例代码
2022/06/05 Servers