import os
from pathlib import Path
def increment_path(path, exist_ok=False, sep='', mkdir=True):
"""
创建运行保存目录
"""
# Increment file or directory path, i.e. runs/exp --> runs/exp{sep}2, runs/exp{sep}3, ... etc.
path = Path(path) # os-agnostic
if path.exists() and not exist_ok:
path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '')
# Method 1
for n in range(2, 9999):
p = f'{path}{sep}{n}{suffix}' # increment path
if not os.path.exists(p): #
break
path = Path(p)
# Method 2 (deprecated)
# dirs = glob.glob(f"{path}{sep}*") # similar paths
# matches = [re.search(rf"{path.stem}{sep}(\d+)", d) for d in dirs]
# i = [int(m.groups()[0]) for m in matches if m] # indices
# n = max(i) + 1 if i else 2 # increment number
# path = Path(f"{path}{sep}{n}{suffix}") # increment path
if mkdir:
path.mkdir(parents=True, exist_ok=True) # make directory
return path
# 创建exp文件夹
name = 'exp'
save_dir = str(increment_path(Path('runs/train/' + name + '/')))
# 创建weights文件夹
w = save_dir + '/weights'
Path(w).mkdir(parents=True, exist_ok=True) # make dir
epoch = 0
weight_name = w + '/epoch' + str(epoch) + '.pt'
# 创建log.txt
with open(save_dir + '/log.txt', 'a') as f:
f.write("test")
print(save_dir)
通过该函数能够帮你处理需要连续跑多个模型结果的问题,自动生成文件夹进行存储。