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下调用pytesseract识别某网站验证码的实现方法
Jun 06 Python
python 性能优化方法小结
Mar 31 Python
python使用tcp实现局域网内文件传输
Mar 20 Python
Python给图像添加噪声具体操作
Mar 03 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
flask框架自定义url转换器操作详解
Jan 25 Python
Python自动化测试笔试面试题精选
Mar 12 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
Jun 06 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
Jun 10 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
pd.DataFrame中的几种索引变换的实现
Jun 16 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动态实现表格跨行跨列实现代码
2012/11/06 PHP
简单解决新浪SAE无法上传文件的问题
2015/05/13 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
JavaScript中获取纯正的undefined的方法
2016/03/06 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
2020/11/30 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
ionic实现下拉刷新载入数据功能
2017/05/11 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
2020/07/26 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
[06:45]2018DOTA2亚洲邀请赛 4.5 SOLO赛 Sccc vs Maybe
2018/04/06 DOTA
python实现用户登录系统
2016/05/21 Python
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
Python 序列的方法总结
2016/10/18 Python
在Django同1个页面中的多表单处理详解
2017/01/25 Python
selenium中get_cookies()和add_cookie()的用法详解
2020/01/06 Python
解决Python数据可视化中文部分显示方块问题
2020/05/16 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
保时捷设计:Porsche Design
2019/03/30 全球购物
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
优秀团员自我评价范文
2014/04/23 职场文书
化学专业大学生职业生涯规划范文
2014/09/13 职场文书
银行业务授权委托书
2014/10/10 职场文书
出差报告范文
2014/11/06 职场文书
停课通知书
2015/04/24 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
高中班主任心得体会
2016/01/07 职场文书
施工安全责任协议书
2016/03/23 职场文书
《遗弃》开发商删推文要跑路?官方回应:还在开发
2022/04/03 其他游戏