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验证企业工商注册码
Oct 25 Python
python导入时小括号大作用
Jan 10 Python
python2.7实现FTP文件下载功能
Apr 15 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python面向对象类编写细节分析【类,方法,继承,超类,接口等】
Jan 05 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
django项目中使用手机号登录的实例代码
Aug 15 Python
centos+nginx+uwsgi+Django实现IP+port访问服务器
Nov 15 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
利用4行Python代码监测每一行程序的运行时间和空间消耗
Apr 22 Python
在pycharm创建scrapy项目的实现步骤
Dec 01 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中cookies使用指南
2007/03/16 PHP
PHP获取网卡地址的代码
2008/04/09 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
在laravel中使用Symfony的Crawler组件分析HTML
2017/06/19 PHP
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
一个简单的Node.js异步操作管理器分享
2014/04/29 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
javascript关于继承解析
2016/05/10 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
vue-preview动态获取图片宽高并增加旋转功能的实现
2020/07/29 Javascript
Python的动态重新封装的教程
2015/04/11 Python
Python中几个比较常见的名词解释
2015/07/04 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python多线程及其基本使用方法实例分析
2019/10/29 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
安纳塔拉酒店度假村及水疗官方网站:Anantara Hotel
2016/08/25 全球购物
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
艺龙旅行网酒店预订:国内、港澳台酒店
2018/06/26 全球购物
Theo + George官方网站:都柏林时尚品牌
2019/04/08 全球购物
输入一行文字,找出其中大写字母、小写字母、空格、数字、及其他字符各有多少
2016/04/15 面试题
夜班门卫岗位职责
2013/12/09 职场文书
思想政治表现评语
2015/01/04 职场文书
学生评语集锦
2015/01/04 职场文书
仓库统计员岗位职责
2015/04/14 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python