python刪除過期log文件操作實例解析
本文研究的主要是python刪除過期log文件的相關內(nèi)容,具體介紹如下。
1. 用Python遍歷目錄
os.walk方法可以很方便的得到目錄下的所有文件,會返回一個三元的tupple(dirpath, dirnames, filenames),其中,dirpath是代表目錄的路徑,dirnames是一個list,包含了dirpath下的所有子目錄的名字,filenames是一個list,包含了非目錄的文件,如果需要得到全路徑,需要使用os.path.join(dirpath,name).例如test目錄的結(jié)構(gòu)為:
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
結(jié)果為:
('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)
結(jié)果為:
'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. 排除需要保留文件
根據(jù)特定名稱的文件以及文件更改時間來判斷是否需要刪除,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定時每天執(zhí)行一次,即可定期每天清理/var/server/log下的過期文件。
總結(jié)
以上就是本文關于python刪除過期log文件操作實例解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關文章
在python shell中運行python文件的實現(xiàn)
今天小編就為大家分享一篇在python shell中運行python文件的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-12-12
Pycharm 文件更改目錄后,執(zhí)行路徑未更新的解決方法
今天小編就為大家分享一篇Pycharm 文件更改目錄后,執(zhí)行路徑未更新的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python3調(diào)用微信企業(yè)號API發(fā)送文本消息代碼示例
這篇文章主要介紹了Python3調(diào)用微信企業(yè)號API發(fā)送文本消息代碼示例,具有一定參考價值,需要的朋友可以了解下。2017-11-11

