我正在尝试编写一个函数,返回包含相同起始名称的图像列表。这是工作目录的截图。你知道吗
def get_image_sequence(filepath):
'''
Description:
Returns list of images contained in the same seq
Args:
filepath(str): Path to a frame in the sequence
'''
seq = []
if not os.path.isfile(filepath):
return []
basename = os.path.basename(filepath).split('.')[0]
directory = os.path.dirname(filepath)
matcher = re.compile(r'^(?P<header>[\w\-.]*(?:[.]|[_]))*(?P<padding>\d+)(?P<tail>[.][A-Za-z]{1,4}$)')
for file in sorted(os.listdir(directory)):
reMatch = matcher.match(file)
if reMatch:
print reMatch.group('header'), reMatch.group('padding'), reMatch.group('tail')
return seq
当我运行脚本试图收集与这个名为TEST\u 0102\u 000\u 010\u fx\u playblast\u v08.0018.jpg的文件序列相关联的图像时,我立即得到以下输出:
TEST_ 0102 .jpg
TEST_0102_000_010_fx_playblast_v08. 0010 .jpg
TEST_0102_000_010_fx_playblast_v08. 0011 .jpg
TEST_0102_000_010_fx_playblast_v08. 0012 .jpg
TEST_0102_000_010_fx_playblast_v08. 0013 .jpg
TEST_0102_000_010_fx_playblast_v08. 0014 .jpg
TEST_0102_000_010_fx_playblast_v08. 0015 .jpg
TEST_0102_000_010_fx_playblast_v08. 0016 .jpg
TEST_0102_000_010_fx_playblast_v08. 0017 .jpg
TEST_0102_000_010_fx_test_v08. 0028 .jpg
TEST_0102_000_010_fx_test_v08. 0029 .jpg
TEST_0102_000_010_fx_test_v08. 0030 .jpg
我想知道是否有一种方法可以插入re,基本名称,即TEST\u 0102\u 000\u 010\u fx\u playblast\u v08。这样,只有当前缀与每个文件匹配时,“重新匹配”才会测试True,然后返回以下结果:
TEST_0102_000_010_fx_playblast_v08. 0010 .jpg
TEST_0102_000_010_fx_playblast_v08. 0011 .jpg
TEST_0102_000_010_fx_playblast_v08. 0012 .jpg
TEST_0102_000_010_fx_playblast_v08. 0013 .jpg
TEST_0102_000_010_fx_playblast_v08. 0014 .jpg
TEST_0102_000_010_fx_playblast_v08. 0015 .jpg
TEST_0102_000_010_fx_playblast_v08. 0016 .jpg
TEST_0102_000_010_fx_playblast_v08. 0017 .jpg
这就是你想要的:
Demo
请注意,我还稍微修改了padding和tail regex。你知道吗
相关问题 更多 >
编程相关推荐