python删除过期log文件操作实例解析

作者:y2701310012 时间:2021-02-03 18:29:36 

本文研究的主要是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下的过期文件。

来源:http://blog.csdn.net/y2701310012/article/details/41783045

标签:python,log文件
0
投稿

猜你喜欢

  • Python基于ThreadingTCPServer创建多线程代理的方法示例

    2022-12-05 19:12:39
  • php中Array2xml类实现数组转化成XML实例

    2023-07-14 21:48:13
  • python使用urlparse分析网址中域名的方法

    2022-12-06 01:00:59
  • 为google量身定做的sitemap生成代码asp版

    2011-04-06 10:43:00
  • python使用matplotlib显示图像失真的解决方案

    2021-03-30 22:31:02
  • python转化excel数字日期为标准日期操作

    2021-01-14 22:38:59
  • Python中random函数的用法整理大全

    2023-05-08 15:15:52
  • SQLServer 中的死锁说明

    2024-01-25 16:10:27
  • Tensorflow获取张量Tensor的具体维数实例

    2021-12-24 20:25:10
  • Python用dilb提取照片上人脸的示例

    2021-07-04 23:34:47
  • Python调用Zoomeye搜索接口的实现

    2021-08-26 03:59:24
  • 初学者必读:提高SQL执行效率的几点建议

    2009-05-07 13:52:00
  • 浅谈Python数学建模之数据导入

    2022-08-11 01:10:28
  • 探索Python数据可视化库中Plotly Express的使用方法

    2022-10-29 13:45:31
  • MySQL表复合查询的实现

    2024-01-15 19:49:20
  • python中实现字符串翻转的方法

    2021-06-08 04:27:59
  • 一个挺酷的星级投票效果

    2010-08-03 12:44:00
  • 使用pyqt 实现重复打开多个相同界面

    2021-08-19 12:33:43
  • 详解vuejs之v-for列表渲染

    2023-07-02 16:56:39
  • Dreamweaver使用技巧--让css使网页图片半透明

    2010-09-05 21:13:00
  • asp之家 网络编程 m.aspxhome.com