Skip to content

Commit cc4efe9

Browse files
committed
Optimize with re.compile
1 parent 0efc1da commit cc4efe9

File tree

1 file changed

+17
-10
lines changed

1 file changed

+17
-10
lines changed

meshroom/core/fileUtils.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,30 @@
11
import os
22
import re
33

4+
pattern = r"(?P<FILESTEM_PREFIX>.*?)(?P<FRAMEID_STR>[-._]\d+)?(?P<EXTENSION>\.\w{3,4})"
5+
compiled_pattern = re.compile(pattern)
6+
compiled_frameId = re.compile(r"(\D+)?(?P<FRAMEID>\d+$)")
7+
48
def getFileElements(inputFilePath: str):
59

610
filename = os.path.basename(inputFilePath)
7-
pattern = r"(?P<FILESTEM>.*?)(?P<FRAME_ID>[-._]\d+)?(?P<EXTENSION>\.\w{3,4})"
8-
match = re.search(pattern, filename)
9-
frameId = match.group("FRAME_ID")
11+
match = compiled_pattern.search(filename)
12+
frameId_str = match.group("FRAMEID_STR")
1013

1114
fileElements = {}
1215
if match:
1316
fileElements = {
1417
"<PATH>": inputFilePath,
1518
"<FILENAME>": filename,
16-
"<FILESTEM>": match.group("FILESTEM"),
17-
"<FILESTEM_PREFIX>": match.group("FILESTEM"),
19+
"<FILESTEM>": match.group("FILESTEM_PREFIX"),
20+
"<FILESTEM_PREFIX>": match.group("FILESTEM_PREFIX"),
1821
"<EXTENSION>": match.group("EXTENSION"),
1922
}
20-
if frameId is not None:
21-
fileElements["<FRAMEID>"] = frameId
22-
fileElements["<FILESTEM>"] += frameId
23+
if frameId_str is not None:
24+
fileElements["<FRAMEID_STR>"] = frameId_str
25+
fileElements["<FILESTEM>"] += frameId_str
26+
match_frameId = compiled_frameId.search(frameId_str)
27+
fileElements["<FRAMEID>"] = match_frameId.group("FRAMEID")
2328

2429
return fileElements
2530

@@ -43,8 +48,10 @@ def replacePatterns(input, pattern, replacements):
4348
def replaceMatch(match):
4449
key = match.group()
4550
return replacements.get(key, "")
46-
return re.sub(pattern, replaceMatch, input)
51+
return pattern.sub(replaceMatch, input)
52+
4753

54+
compiled_element = re.compile(r"<\w*>")
4855

4956
def resolvePath(input, outputTemplate: str) -> str:
5057

@@ -53,7 +60,7 @@ def resolvePath(input, outputTemplate: str) -> str:
5360
else:
5461
replacements = getViewElements(input)
5562

56-
resolved = replacePatterns(outputTemplate, r"<\w*>", replacements)
63+
resolved = replacePatterns(outputTemplate, compiled_element, replacements)
5764

5865
return resolved
5966

0 commit comments

Comments
 (0)