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中除法使用的注意事项
Aug 21 Python
使用Python的Tornado框架实现一个简单的WebQQ机器人
Apr 24 Python
python基于Tkinter库实现简单文本编辑器实例
May 05 Python
详解Python中的type()方法的使用
May 21 Python
详谈python中冒号与逗号的区别
Apr 18 Python
TensorFlow 模型载入方法汇总(小结)
Jun 19 Python
python 使用值来排序一个字典的方法
Nov 16 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
python和mysql交互操作实例详解【基于pymysql库】
Jun 04 Python
python如何编写类似nmap的扫描工具
Nov 06 Python
python eventlet绿化和patch原理
Nov 21 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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部分
2006/10/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
thinkphp5.1框架容器与依赖注入实例分析
2019/07/23 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
javascript写的一个链表实现代码
2009/10/25 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
2013/06/29 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
jQuery在iframe中无法弹出对话框的解决方法
2014/01/12 Javascript
编写高效jQuery代码的4个原则和5个技巧
2014/04/24 Javascript
Jquery实现的角色左右选择特效
2014/05/21 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
老生常谈js-react组件生命周期
2017/05/02 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
解决VUE中document.body.scrollTop为0的问题
2018/09/15 Javascript
vue mounted 调用两次的完美解决办法
2018/10/29 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
2019/02/01 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
python实现简单爬虫功能的示例
2016/10/24 Python
Python numpy实现数组合并实例(vstack,hstack)
2018/01/09 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Python模拟键盘输入自动登录TGP
2020/11/27 Python
NFL加拿大官方网上商店:NHLShop.ca
2019/03/12 全球购物
总裁岗位职责
2013/12/04 职场文书
运动会口号16字
2014/06/07 职场文书
西湖英语导游词
2015/02/06 职场文书
学雷锋日活动总结
2015/02/06 职场文书
师德师风主题教育活动总结
2015/05/07 职场文书
2015年班主任德育工作总结
2015/05/21 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
python实现局部图像放大
2021/11/17 Python