Python创建增量目录的代码实例

 更新时间:2022年11月26日 09:21:32   作者:Jnchin  
这篇文章主要给大家介绍了关于Python创建增量目录的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用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创建增量目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • openCV显著性检测的使用

    openCV显著性检测的使用

    显著性检测就是使用图像处理技术和计算机视觉算法来定位图片中最“显著”的区域,本文主要介绍了openCV显著性检测的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Python目录和文件处理总结详解

    Python目录和文件处理总结详解

    这篇文章主要介绍了Python目录和文件处理总结详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python使用pandas和openpyxl读取Excel表格的方法详解

    Python使用pandas和openpyxl读取Excel表格的方法详解

    这篇文章主要介绍了Python读取Excel表格数据的方法,Python提供了多种读取Excel文件的方式,最常用的库是pandas和openpyxl,下面我将详细介绍如何使用这两个库来读取Excel文件,并包含一些实用示例,需要的朋友可以参考下
    2024-10-10
  • pytorch关于卷积操作的初始化方式(kaiming_uniform_详解)

    pytorch关于卷积操作的初始化方式(kaiming_uniform_详解)

    这篇文章主要介绍了pytorch关于卷积操作的初始化方式(kaiming_uniform_详解),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • python中的变量命名规则详情

    python中的变量命名规则详情

    这篇文章主要介绍了python中的变量命名规则详情,变量名可以包括字母、数字、下划线,但是数字不能做为开头,变量用的好或不好,和代码质量有着非常重要的联系,合理的使用变量,可以让你的代码可读性更高并且更加简洁,下面相关内容吧需要的小伙伴可以参考一下
    2022-03-03
  • python如何实现二叉搜索树算法

    python如何实现二叉搜索树算法

    二叉搜索树(BST)是一种数据结构,用于动态集合操作如搜索、插入、删除等,每个节点的左子树包含小于节点值的所有项,右子树包含大于节点值的所有项,通过中序遍历可得升序序列,插入、搜索和删除都从根节点开始,根据值的大小移动到左或右子树
    2024-10-10
  • 解决python中使用PYQT时中文乱码问题

    解决python中使用PYQT时中文乱码问题

    今天小编就为大家分享一篇解决python中使用PYQT时中文乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python文件操作和异常处理的方法和技巧

    Python文件操作和异常处理的方法和技巧

    本文介绍了Python文件操作和异常处理的方法和技巧,包括读写文本文件、读写二进制文件、文件指针、异常类型和处理、try-except语句、异常处理程序等内容,帮助读者更好地掌握Python在文件操作和异常处理方面的应用
    2023-05-05
  • python3让print输出不换行的方法

    python3让print输出不换行的方法

    在本篇内容里小编给大家整理的是关于python3让print输出不换行的方法,有需要的朋友们可以学习参考下。
    2020-08-08
  • 解决pycharm remote deployment 配置的问题

    解决pycharm remote deployment 配置的问题

    今天小编就为大家分享一篇解决pycharm remote deployment 配置的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论