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