Python创建增量目录的代码实例
作者:Jnchin 发布时间:2021-12-07 04:12:55
标签: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’并返回新的路径名。
来源:https://blog.csdn.net/qq_38237214/article/details/121497371
0
投稿
猜你喜欢
- Python 使用 selenium 进行自动化测试 或者协助日常工作,内容如下所示:1、基础准备需要准备 Python 环境需要安装 se
- 注意: 在搭建网络的时候用carpool2D的时候,让高度和宽度方向不同池化时,用如下:nn.MaxPool2d(kernel_size=2
- 想买mate40,但总是抢不到,所以想试着能不能写个脚本代码。第一步:把想要抢购的商品加进购物车,注意:脚本是对购物车内全部商品进行下单操作
- 今天我要为大家介绍的是XPath,XPath是导航和查询XML文档的语言。我们从一个函数开始。UpdateXML()函数我们已经花了很多时间
- 获得list中最大元素的索引aa = [1,2,3,4,5]aa.index(max(aa)) 相应的最小值使用aa = [1,2,3,4,
- 时间序列数据在数据科学领域无处不在,在量化金融领域也十分常见,可以用于分析价格趋势,预测价格,探索价格行为等。学会对时间序列数据进行可视化,
- window.opener 的用法 window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一
- 我们继续学习Python异步编程,这里将介绍异步Web框架sanic,为什么不是tornado?从框架的易用性来说,Flask要远远比tor
- 目录一、对比数据类型二、可变集合构造方法三、不可变集合的构造方法四、集合构造注意事项 Python集合又是一种新的数据类型,集合有
- 本文实例讲述了Flask框架学习笔记之模板操作。分享给大家供大家参考,具体如下:flask的模板引擎是Jinja2。引入模板的好处是增加程序
- 如何验证IP地址?sub chkIP(boardid) dim rsIP dim ipAr
- 通过 1至10 阶来拟合对比 均方误差及R评分,可以确定最优的“最大阶数”。import numpy as npimport matplot
- 目前很多网站都使用ajax技术动态加载数据,和常规的网站不一样,数据时动态加载的,如果我们使用常规的方法爬取网页,得到的只是一堆html代码
- 最近的项目中大量涉及数据的预处理工作,对于ndarray的使用非常频繁。其中ndarray如何进行数值筛选,总结了几种方法。1.按某些固定值
- extend()方法追加序列内容到列表。语法以下是extend()方法的语法:list.extend(seq)参数 &
- 没有gpu,改用cpu跑代码以为很麻烦的修改,很大动干戈的改动,以及无止尽的报错,结果,就改动代码中的device就OK了,惊不惊喜,意不意
- 本文实例讲述了Python列表解析操作。分享给大家供大家参考,具体如下:列表解析Python 的强大特性之一是其对 list 的解析,它提供
- html页面一般都会指定一个编码,如何获取到是处理html页面的第一步,因为错误的编码必然带来后面处理的问题。这里我用python的正则表达
- 最近准备使用Python+Hadoop+Pandas进行一些深度的分析与机器学习相关工作。(当然随着学习过程的进展,现在准备使用Python
- 函数带括号和不带括号的区别1、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不需等该函数执行完成2、带括号(此