Python創(chuàng)建增量目錄的代碼實(shí)例
需求很簡單
比如我在做機(jī)器學(xué)習(xí)實(shí)驗(yàn)的時(shí)候,實(shí)驗(yàn)結(jié)果的保存路徑是'runs/exp'
。
這樣就會(huì)出現(xiàn)一個(gè)問題:當(dāng)我第二次運(yùn)行程序的時(shí)候,如果我忘記更改代碼中的路徑名或者清除上次實(shí)驗(yàn)結(jié)果,這次的實(shí)驗(yàn)結(jié)果會(huì)和上次實(shí)驗(yàn)結(jié)果混在一起,很頭疼。
所以我希望在下次實(shí)驗(yàn)的時(shí)候代碼自動(dòng)創(chuàng)建一個(gè)新的目錄,如:'runs/exp2'
,來保存新的實(shí)驗(yàn)結(jié)果。
代碼
粘貼復(fù)制,直接照著下面用就行。
下面的函數(shù)是我從yolo5里復(fù)制過來的,代碼質(zhì)量很高,魯棒性很高,可以放心使用。
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
效果如下:
因?yàn)楫?dāng)前目錄下已經(jīng)有了一個(gè)’runs/exp’,所以函數(shù)increment_path
會(huì)自動(dòng)創(chuàng)建增量目錄’runs\exp2’并返回新的路徑名。
好了,上述就是最常用的使用方法,接下來是我自己的筆記。
1、函數(shù)increment_path(path, exist_ok=False, sep='', mkdir=True)
的參數(shù)含義如下:
- path: 表示要增量的目錄,如:‘runs/exp’
- exist_ok: 若為True,則不增量路徑,直接使用原來的路徑。
- sep: 目錄名的分隔符,比如sep=’_’,則返回’runs/exp_2’
- mkdir: 若為False,則只返回路徑名,不會(huì)自動(dòng)創(chuàng)建目錄。
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后綴的文件
總結(jié)
到此這篇關(guān)于Python創(chuàng)建增量目錄的文章就介紹到這了,更多相關(guān)Python創(chuàng)建增量目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用pandas和openpyxl讀取Excel表格的方法詳解
這篇文章主要介紹了Python讀取Excel表格數(shù)據(jù)的方法,Python提供了多種讀取Excel文件的方式,最常用的庫是pandas和openpyxl,下面我將詳細(xì)介紹如何使用這兩個(gè)庫來讀取Excel文件,并包含一些實(shí)用示例,需要的朋友可以參考下2024-10-10pytorch關(guān)于卷積操作的初始化方式(kaiming_uniform_詳解)
這篇文章主要介紹了pytorch關(guān)于卷積操作的初始化方式(kaiming_uniform_詳解),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09解決pycharm remote deployment 配置的問題
今天小編就為大家分享一篇解決pycharm remote deployment 配置的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06