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支持断点续传的多线程下载示例
Jan 16 Python
浅谈对yield的初步理解
May 29 Python
sublime text 3配置使用python操作方法
Jun 11 Python
python reduce 函数使用详解
Dec 05 Python
Python3 replace()函数使用方法
Mar 19 Python
pandas计数 value_counts()的使用
Jun 24 Python
pytorch实现用Resnet提取特征并保存为txt文件的方法
Aug 20 Python
Python paramiko模块使用解析(实现ssh)
Aug 30 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
简单了解python列表和元组的区别
May 14 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
python+selenium小米商城红米K40手机自动抢购的示例代码
Mar 24 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导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
PHP简单遍历对象示例
2016/09/28 PHP
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
基于JQuery 滑动与动画的说明介绍
2013/04/18 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
Bootstrap与Angularjs的模态框实例代码
2017/08/03 Javascript
关于react-router/react-router-dom v4 history不能访问问题的解决
2018/01/08 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
vue新vue-cli3环境配置和模拟json数据的实例
2018/09/19 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
Vue 动态添加路由及生成菜单的方法示例
2019/06/20 Javascript
countUp.js实现数字滚动效果
2019/10/18 Javascript
Windows上node.js的多版本管理工具用法实例分析
2019/11/06 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
Python处理文本换行符实例代码
2018/02/03 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
python爬虫的一个常见简单js反爬详解
2019/07/09 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
财务部副经理岗位职责
2014/03/14 职场文书
公证书标准格式
2014/04/10 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
酒店采购员岗位职责
2015/04/03 职场文书
运动员入场前导词
2015/07/20 职场文书
世界上超棒的8种逻辑思维
2019/08/06 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
基于Python实现nc批量转tif格式
2022/08/14 Python