请提供一个Python脚本,可以删除10个不同目录中超过5天的所有.log
个文件。
Path1就像abc/bcd/def/xyz/fkd/.log
Path2与abc/bcd/def/mnq/kjf/.log
等等,前三个目录是相同的,但之后就不同了。
答案 0 :(得分:0)
也许你可以试试这个:
hive-site.xml
答案 1 :(得分:0)
尝试以下内容:
from datetime import datetime, timedelta
import os
import time
folder_root = r'abc/def'
five_days_ago = datetime.today() - timedelta(days=5)
for root, dir_names, file_names in os.walk(folder_root):
file_names = [file_name for file_name in file_names if os.path.splitext(file_name)[1] == '.log']
for file_name in file_names:
cur_file = os.path.join(root, file_name)
modified_time = datetime.strptime(time.ctime(os.path.getmtime(cur_file)), "%a %b %d %H:%M:%S %Y")
if modified_time < five_days_ago:
print 'Removing: {}, last modified {}'.format(cur_file, modified_time)
#os.remove(cur_file) # uncomment when you are sure it has found the correct files
这使用Python的os.walk()
函数来遍历所有子文件夹。对于每个文件夹,它仅过滤掉.log
个文件,并计算每个文件的修改时间。如果超过五天,则调用os.remove()
删除文件。
答案 2 :(得分:0)
下面是我准备的脚本,它为我提供了所有目录中日志文件的完整列表。
导入时间 从时间导入strftime,gmtime
NOW = time.time() LOG = open(&#39; /home/vvivek/cleanup.log' ;,&#39; a&#39;)
用于os.walk中的PATH,DIR,FILES(&#39; / tibco / bw / app /&#39;): 对于文件中的文件: 如果os.path.splitext(FILE)[ - 1] ==&#39; .log&#39;: FILE_ = os.path.join(PATH,FILE) CREATE_TIME = os.path.getmtime(FILE_) if(NOW - CREATE_TIME)//(24 * 3600)&gt; = 7: LOG.write(strftime(&#34;%Y-%m-%d%H:%M:%S&#34;,gmtime())) LOG.write(&#39; | FILE DELETED |&#39;) LOG.write(FILE_) LOG.write(&#39; \ n&#39;) LOG.close()
我没有包含os.remove(),因为目前我仍然需要在代码中进行更改,而且它不会过滤以.log.Somenumber结尾的文件。
注意:另外,我是python的新手,所以我希望在这里有一些协调,而不是要求完整的代码
谢谢,