Python 脚本递归删除 指定文件夹目录下 指定年份 删除所有文件

场景需求

服务器的磁盘被日志等一些老旧数据塞满了,如果人工删除的话需要很长时间。所以这边通过python脚本来做删除。

本脚本需要在python3中运行。

功能

指定文件夹下递归删除所有修改日期在指定年份的文件。

代码实例

#!/usr/bin/env python
# coding: utf-8
import os , time , datetime , getopt ,sys
def usage():
    print('usage:%s --input=[value] --output=[value] ')
    sys.exit()

def listDir(fileDir,year):
     for eachFile in os.listdir(fileDir):
        if os.path.isfile(fileDir+"/"+eachFile):   #如果是文件,判断最后修改时间,符合条件进行删除
            ft = os.stat(fileDir+"/"+eachFile)
            ltime = time.localtime(int(ft.st_mtime)) #获取文件最后修改时间
            file_year = time.strftime("%Y",ltime)
            if int(file_year) == int(year) :         
                print("删除文件: "+fileDir+"/"+eachFile)
                # os.remove(fileDir+"/"+eachFile);   #删除文件
        elif os.path.isdir(fileDir+"/"+eachFile) :    #如果是文件夹,继续递归
            listDir(fileDir+"/"+eachFile , year)

def del_emp_dir(path):
    for root, dirs, files in os.walk(path):
        if not os.listdir(root):
            try:
                os.rmdir(root)
            except Exception as e:
                pass

if __name__ == '__main__':
    options, args = getopt.getopt(sys.argv[1:], '',['path=','year='])
    for name, value in options:
        if name in ('-p','--path'):
            path = format(value)
        elif name in ('-y','--year'):
            year = format(value)

    if 'path' not in locals().keys() or not 'year' in locals().keys() :
        usage()

    listDir(fileDir = path,year=year)
    del_emp_dir(path)

调用方法

python .\deleteFilesByYear.py --path="D:\Downloads\" --year=2019

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注