如何编写Python脚本以删除10个不同目录中以.log结尾的所有文件

时间:2016-11-07 07:56:12

标签: python

请提供一个Python脚本,可以删除10个不同目录中超过5天的所有.log个文件。

Path1就像abc/bcd/def/xyz/fkd/.log
Path2与abc/bcd/def/mnq/kjf/.log

类似

等等,前三个目录是相同的,但之后就不同了。

3 个答案:

答案 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的新手,所以我希望在这里有一些协调,而不是要求完整的代码

谢谢,