python删除过期log文件操作实例解析
本文研究的主要是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
那么使用如下代码:
importos foriinos.walk('test'): printi
结果为:
('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'])
要得到带路径的文件,则可以这样操作:
foriinos.walk('test'): #printi forjini[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判断来递归操作得到目录中的文件:
defwalk(dir): ret=[] dir=os.path.abspath(dir) forfilein[fileforfileinos.listdir(dir)ifnotfilein[".",".."]]: nfile=os.path.join(dir,file) ifos.path.isdir(nfile): ret.extend(walk(nfile)) else: ret.append(nfile) returnret
2.排除需要保留文件
根据特定名称的文件以及文件更改时间来判断是否需要删除,os.path.getmtime(file)来得到文件最后改变的时间,当然除了诸如“XXX"infile的方法来判断文件名外,也可以采用正则表达式的方法。
defshouldkeep(file): if'.py'infile: returnTrue elif'.conf'infile: returnTrue elif'current'infile: returnTrue elif'rtb'infileanddatetime.datetime.fromtimestamp(os.path.getmtime(file))>datetime.datetime.now()-datetime.timedelta(3): returnTrue #thelogwebdebug/popterr/webaccess/controller_slow/game/checking_socialwhicharemodified6dayagoshouldberemoved elifdatetime.datetime.fromtimestamp(os.path.getmtime(file))<\ datetime.datetime.now()-datetime.timedelta(6)\ and('webdebug'infile\ or'potperr'infile\ or'webaccess'infile\ or'controller_slow'infile\ or'game.'infile\ or'checkin_social'infile\ ): returnFalse elifdatetime.datetime.fromtimestamp(os.path.getmtime(file))<\ datetime.datetime.now()-datetime.timedelta(2)\ and('queue.master.info'infile): returnFalse elifdatetime.datetime.fromtimestamp(os.path.getmtime(file))>\ datetime.datetime.now()-datetime.timedelta(6): returnTrue else: returnFalse
files=walk('/var/server/log') foriinfiles: ifnotshouldkeep(i): printi,datetime.datetime.fromtimestamp(os.path.getmtime(i)) os.remove(i)
将该脚本用crontab定时每天执行一次,即可定期每天清理/var/server/log下的过期文件。
总结
以上就是本文关于python删除过期log文件操作实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!