|
|
@@ -933,13 +933,24 @@ def increment_path(path, exist_ok=False, sep='', mkdir=False): |
|
|
|
path = Path(path) # os-agnostic |
|
|
|
if path.exists() and not exist_ok: |
|
|
|
path, suffix = (path.with_suffix(''), path.suffix) if path.is_file() else (path, '') |
|
|
|
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}") # increment path |
|
|
|
|
|
|
|
# Method 1 |
|
|
|
for n in range(2, 9999): |
|
|
|
p = f'{path}{sep}{n}{suffix}' # increment path |
|
|
|
if not os.path.exists(p): # |
|
|
|
break |
|
|
|
path = Path(p) |
|
|
|
|
|
|
|
# Method 2 (deprecated) |
|
|
|
# dirs = glob.glob(f"{path}{sep}*") # similar paths |
|
|
|
# matches = [re.search(rf"{path.stem}{sep}(\d+)", 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}") # increment path |
|
|
|
|
|
|
|
if mkdir: |
|
|
|
path.mkdir(parents=True, exist_ok=True) # make directory |
|
|
|
|
|
|
|
return path |
|
|
|
|
|
|
|
|