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调用短信猫控件实现发短信功能实例
Jul 04 Python
Python中内置的日志模块logging用法详解
Jul 12 Python
python 创建弹出式菜单的实现代码
Jul 11 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
python语音识别实践之百度语音API
Aug 30 Python
浅谈python脚本设置运行参数的方法
Dec 03 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
python目标检测给图画框,bbox画到图上并保存案例
Mar 10 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
jupyter实现重新加载模块
Apr 16 Python
使用matplotlib动态刷新指定曲线实例
Apr 23 Python
python3+PyQt5+Qt Designer实现界面可视化
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
phpmyadmin操作流程
2006/10/09 PHP
php MySQL与分页效率
2008/06/04 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
2008/06/05 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
PHP URL参数获取方式的四种例子
2014/02/28 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
详解php中 === 的使用
2016/10/24 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
PHP7中I/O模型内核剖析详解
2019/04/14 PHP
js 获取服务器控件值的代码
2010/03/05 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
使用JavaScript获取Request中参数的值方法
2016/09/27 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
前端页面文件拖拽上传模块js代码示例
2017/05/19 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
Python判断变量是否已经定义的方法
2014/08/18 Python
python根据开头和结尾字符串获取中间字符串的方法
2015/03/26 Python
python实现给数组按片赋值的方法
2015/07/28 Python
Pycharm配置远程调试的方法步骤
2018/12/17 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
Python中的四种交换数值的方法解析
2019/11/18 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
会计自我鉴定
2013/11/02 职场文书
竞聘副主任科员演讲稿
2014/01/11 职场文书
党员志愿者活动总结
2014/06/26 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
工商局调档介绍信
2015/10/22 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
互联网创业商业模式以及赚钱法则有哪些?
2019/10/12 职场文书