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中的__init__()方法
May 02 Python
Python中的一些陷阱与技巧小结
Jul 10 Python
详解python中的json的基本使用方法
Dec 21 Python
python安装cx_Oracle模块常见问题与解决方法
Feb 21 Python
PyQt5每天必学之组合框
Apr 20 Python
Python判断是否json是否包含一个key的方法
Dec 31 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
django自带调试服务器的使用详解
Aug 29 Python
在python中创建指定大小的多维数组方式
Nov 28 Python
python中图像通道分离与合并实例
Jan 17 Python
python的pip有什么用
Jun 17 Python
python中pyqtgraph知识点总结
Jan 26 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返回json数据函数实例
2014/10/09 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
node.js中的http.response.write方法使用说明
2014/12/14 Javascript
JavaScript电子时钟倒计时第二款
2016/01/10 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
jquery插件bootstrapValidator数据验证详解
2016/11/09 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
详解vue跨组件通信的几种方法
2017/06/15 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
vue.js编译时给生成的文件增加版本号
2018/09/17 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
[54:30]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
简单实现Python爬取网络图片
2018/04/01 Python
python 集合 并集、交集 Series list set 转换的实例
2018/05/29 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
Django框架 querySet功能解析
2019/09/04 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
加拿大最大的体育用品、鞋类和服装零售商:Sport Chek
2018/11/29 全球购物
英文翻译的自我评价语句
2013/10/04 职场文书
导游实习生自荐书
2014/01/28 职场文书
大学运动会入场词
2014/02/22 职场文书
吃空饷专项治理工作实施方案
2014/03/04 职场文书
图书室标语
2014/06/21 职场文书
尊师重教演讲稿
2014/09/04 职场文书
创业计划书之川味火锅店
2019/09/02 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
关于HTML编码导致的乱码问题
2021/09/04 HTML / CSS
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS