本篇文章代码执行的前提是所有文件名的格式要统一,要实现的效果是删除昨天之前的csv文件,如有其他情况也可参考本文做适当修改。
注意:一定要根据自己的需求,设置好需要删除文件的条件以及目录,否则很容易误删其他文件。
原来目录中的文件有:
执行代码:
import os
import re
from datetime import date, timedelta
# pwd = os.getcwd() # 获得当前目录
# 所需操作文件所在路径
filePath = 'E:\work\python\DeleteCsvByDate\wenjian\\'
# 获取该目录下文件名
file_list = os.listdir(filePath)
# 获取今天和昨天时间
today = (date.today()).strftime("%Y-%m-%d")
yesterday = [(date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")]
three_days_go = (date.today() + timedelta(days=-2)).strftime("%Y-%m-%d")
# 计算年月日累计和
def calculation(data):
value = str(data[0]).split('-')
year = int(value[0])
month = int(value[1])
day = int(value[2])
sum = year * 1000 + month * 100 + day * 10
return sum
yesterday_sum = calculation(yesterday)
# 遍历文件名
for name in file_list:
extension = name.split(".")[1]
# 根据扩展名判断是否是csv文件
if extension == 'csv':
# 用正则表达式提取时间
pattern = re.compile(r'\d{4}-\d{2}-\d{2}')
time_value = pattern.findall(name)
if time_value != []:
sum = calculation(time_value)
if sum < yesterday_sum:
os.remove(os.path.join(filePath, name))
else:
print(f"文件'{name}'的扩展名不是csv")
# 删除之后目录下的文件名
end_file_list = os.listdir(filePath)
for item in end_file_list:
print(f"执行删除操作之后目录下的文件名:{item}")
输出结果:
执行代码后该目录中所剩文件:
删除文件参考文章链接为:python 删除指定路径下的csv文件_Candy_Lena的博客-CSDN博客_python 删除csv文件
关于正则表达式部分参考文章链接为:python正则表达式从字符串中提取数字_赵大宝的博客-CSDN博客_python提取字符串中的数字