Hi,
There is a helper method to resolve the real filename, that we use internally, but sadly it isn't exposed in the Clarisse Python API.
So you need to write your own. Here is an example:
python code
import os
import re
def get_real_path(raw_file_path, file_ext, frame):
"""
Evaluate the real file path from a raw file path containing a frame padding expression "####".
Note: this will replace only the 1st pattern occurence.
Example: "render_####.exr" at frame 42 will output "render_0042.exr"
"""
# remove the extension if already set
file, _ = os.path.splitext(raw_file_path)
# search and replace the # pattern
match = re.search('(#+)', file)
if not match:
# by default, Clarisse pads on 5 digits when no pattern is set
result = file + '{:05d}'.format(frame) + file_ext
return result
else:
pattern_start = match.start(0)
pattern_length = match.end(0) - pattern_start
frame_str = '{:0{}d}'.format(frame, pattern_length)
result = file[:pattern_start] + frame_str + file[pattern_start + pattern_length:] + file_ext
return result
# Tests
print get_real_path('render', '.exr', 42)
print get_real_path('render.exr', '.exr', 42)
print get_real_path('render_##', '.exr', 42)
print get_real_path('render_##.exr', '.exr', 42)
print get_real_path('render_####', '.exr', 42)
print get_real_path('render_####_##', '.exr', 42)
print get_real_path('render_#####_extra', '.exr', 42)
Output:
- Code: Select all
render00042.exr
render00042.exr
render_42.exr
render_42.exr
render_0042.exr
render_0042_##.exr
render_00042_extra.exr
Cheers,