python删除指定目录下文件,可以设置报文n个文件,只删除超过指定时间的文件,指定的目录支持正则
时间: 2023-05-30 11:07:14 浏览: 78
表达式匹配。
可以使用以下代码实现:
```python
import os
import re
import time
def delete_files(path, pattern, max_age, max_files):
"""
删除指定目录下符合条件的文件
:param path: 目录路径
:param pattern: 文件名正则表达式
:param max_age: 最大保留时间,单位为秒
:param max_files: 最大保留文件数
"""
now = time.time()
files = []
# 遍历目录下所有文件,并筛选出符合条件的文件
for file in os.listdir(path):
if re.match(pattern, file):
file_path = os.path.join(path, file)
if os.path.isfile(file_path) and now - os.path.getmtime(file_path) > max_age:
files.append(file_path)
# 按照修改时间排序,保留最新的 max_files 个文件
files.sort(key=lambda x: os.path.getmtime(x))
files = files[:-max_files]
# 删除文件
for file in files:
os.remove(file)
# 示例
delete_files('/path/to/dir', r'^test\d+\.txt$', 3600, 10)
```
其中,`path` 参数是目录路径,`pattern` 参数是文件名正则表达式,`max_age` 参数是最大保留时间,单位为秒,`max_files` 参数是最大保留文件数。该函数会遍历目录下所有文件,筛选出符合条件的文件并按照修改时间排序,保留最新的 `max_files` 个文件,最后删除其余文件。