Python创建增量目录的代码实例
目录
- 需求很简单
- 代码
- 使用方法
- 总结
需求很简单
比如我在做机器学习实验的时候,实验结果的保存路径是'runs/exp'
。
这样就会出现一个问题:当我第二次运行程序的时候,如果我忘记更改代码中的路径名或者清除上次实验结果,这次的实验结果会和上次实验结果混在一起,很头疼。
所以我希望在下次实验的时候代码自动创建一个新的目录,如:'runs/exp2'
,来保存新的实验结果。
代码
粘贴复制,直接照着下面用就行。
下面的函数是我从yolo5里复制过来的,代码质量很高,鲁棒性很高,可以放心使用。
from pathlib import Path import re import glob 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. :param path: file or directory path to increment :param exist_ok: existing project/name ok, do not increment :param sep: separator for directory name :param mkdir: create directory :return: incremented path """ path = Path(path) # os-agnostic if path.exists() and not exist_ok: suffix = path.suffix path = path.with_suffix('') dirs = glob.glob(f"{path}{sep}*") # similar paths matches = [re.search(rf"%s{sep}(\d+)" % path.stem, 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}") # update path dir_ = path if path.suffix == '' else path.parent # directory if not dir_.exists() and mkdir: dir_.mkdir(parents=True, exist_ok=True) # make directory return path
使用方法
path = 'runs/exp' # 定义你的路径名,比如我的是'runs/exp' path = increment_path(path) print(path) # 打印输出 runs\exp2
效果如下:
因为当前目录下已经有了一个’runs/exp’,所以函数increment_path
会自动创建增量目录’runs\exp2’并返回新的路径名。
好了,上述就是最常用的使用方法,接下来是我自己的笔记。
1、函数increment_path(path, exist_ok=False, sep='', mkdir=True)
的参数含义如下:
- path: 表示要增量的目录,如:‘runs/exp’
- exist_ok: 若为True,则不增量路径,直接使用原来的路径。
- sep: 目录名的分隔符,比如sep=’_’,则返回’runs/exp_2’
- mkdir: 若为False,则只返回路径名,不会自动创建目录。
2、其他笔记
pathlib.Path
from pathlib import Path path = Path(path) path.suffix # 表示获取文件后缀名 path.with_suffix('') # 表示更改文件后缀名为'' path.stem # 返回文件名,不带后缀
glob.glob
import glob glob.glob(f"./data/*.jpg") # 找到./data/目录下所有.jpg后缀的文件
总结
到此这篇关于Python创建增量目录的文章就介绍到这了,更多相关Python创建增量目录内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
赞 (0)