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
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 一、导入库import randomimport time二、注册用户我们用变量与input实现name = str(input('
- 说下整体思路1、服务器安装ffmpeg2、使用ffmpeg -i 指令来转换amr为mp3格式(这个到时候写在PHP代码中,使用exec函数
- 一、基础介绍Go 是静态(编译型)语言,是区别于解释型语言的弱类型语言(静态:类型固定,强类型:不同类型不允许直接运算)例如 python
- 如下所示:# 方法一:%a = "hello"b = "world!"print("你好,
- 这篇文章主要介绍了通过python连接Linux命令行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 概述具体的案例描述在此就不多赘述. 同一数据集我们在机器学习里的随机森林模型中已经讨论过.导包import numpy as npimpor
- 前言vim是个伟大的编辑器,不仅在于她特立独行的编辑方式,还在于她强大的扩展能力。然而,vim自身用于写插件的语言vimL功能有很大的局限性
- 目录0. 前言1. ipaddress模块介绍1.1 IP主机地址1.2 定义网络1.3 主机接口1.4 检查address/network
- /*Bresenham画圆算法*/var arc = function(x0,y0,r){/*起点坐标x0,y
- 在NLP中,数据清洗与分词往往是很多工作开始的第一步,大多数工作中只有中文语料数据需要进行分词,现有的分词工具也已经有了很多了,这里就不再多
- sorted 用于对集合进行排序(这里集合是对可迭代对象的一个统称,他们可以是列表、字典、set、甚至是字符串),它的功能非常强大1、对列表
- 在输入框里面预设一段提示文字,当焦点在输入框的时候清空这段文字,这在目前来说已经不是什么新鲜事了。淘宝的搜索框就用到了这样一种设计:这种设计
- 前言在上一节我们通过使用NumPy的数组分割成功的在我们的图像上画了一个绿色的方块,但是如果我们想画一个单一的线条或者圆圈该怎么办呢?Num
- 在IE比较简单,大家都知道用setHomePage来设置,懒人写法:<a href="#setHomePage"
- Menu(菜单)组件用于实现顶级菜单、下拉菜单和弹出菜单。何时使用 Menu 组件?Menu 组件通常被用于实现应用程序上的各种菜单,由于该
- 执行文件和目标导入模块在同一目录直接import比如我要在ma_main.py中导入env包中的make_env.py文件, 从而读取其中的
- Python运行出现DeprecationWarning今天运行 py 时出现下面的问题:DeprecationWarning: Using
- Python 如何转换string到float?简单几步,让你轻松解决。打开软件,新建python项目,如图所示右键菜单中创建.py文件,如
- 1.创建空字典>>> dic = {}>>> type(dic)<type 'dict
- 构建一个二阶多项式:x^2 - 4x + 3多项式求解>>> p = np.poly1d([1,-4,3])