Python創(chuàng)建增量目錄的代碼實(shí)例
需求很簡(jiǎn)單
比如我在做機(jī)器學(xué)習(xí)實(shí)驗(yàn)的時(shí)候,實(shí)驗(yàn)結(jié)果的保存路徑是'runs/exp'。
這樣就會(huì)出現(xiàn)一個(gè)問(wèn)題:當(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',來(lái)保存新的實(shí)驗(yàn)結(jié)果。
代碼
粘貼復(fù)制,直接照著下面用就行。
下面的函數(shù)是我從yolo5里復(fù)制過(guò)來(lái)的,代碼質(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’并返回新的路徑名。
好了,上述就是最常用的使用方法,接下來(lái)是我自己的筆記。
1、函數(shù)increment_path(path, exist_ok=False, sep='', mkdir=True)的參數(shù)含義如下:
- path: 表示要增量的目錄,如:‘runs/exp’
- exist_ok: 若為True,則不增量路徑,直接使用原來(lái)的路徑。
- 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python自動(dòng)化構(gòu)建工具scons使用入門筆記
這篇文章主要介紹了Python自動(dòng)化構(gòu)建工具scons使用入門筆記,本文講解了安裝scons、scons常用命令、scons使用示例等內(nèi)容,需要的朋友可以參考下2015-03-03
使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板(推薦)
這篇文章主要介紹了使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-04-04
解決python 使用openpyxl讀寫(xiě)大文件的坑
這篇文章主要介紹了解決python 使用openpyxl讀寫(xiě)大文件的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Pandas自定義選項(xiàng)option設(shè)置
pandas有一個(gè)option系統(tǒng)可以控制pandas的展示情況,一般來(lái)說(shuō)我們不需要進(jìn)行修改,但是不排除特殊情況下的修改需求。本文將會(huì)詳細(xì)講解pandas中的option設(shè)置,感興趣的可以了解下2021-07-07

