本文研究的主要是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文件操作实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]