场景需求
服务器的磁盘被日志等一些老旧数据塞满了,如果人工删除的话需要很长时间。所以这边通过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