首頁 > 軟體

Python建立增量目錄的程式碼範例

2022-11-27 14:00:57

需求很簡單

比如我在做機器學習實驗的時候,實驗結果的儲存路徑是'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)  # 列印輸出 runsexp2

效果如下:

因為當前目錄下已經有了一個’runs/exp’,所以函數increment_path會自動建立增量目錄’runsexp2’並返回新的路徑名。

好了,上述就是最常用的使用方法,接下來是我自己的筆記。

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建立增量目錄內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com