2 回答

TA贡献1869条经验 获得超4个赞
我将重新定义该函数以返回一个值,其中包含有关传递的文件名类型的元数据。举个例子:
import re
def get_asset_type(filename):
"""Check filename for asset type"""
if re.match(edit_pattern, filename):
print("\nFile is an Edit prev. Filename: {}".format(filename))
fields = filename.split("_")
return {'type': 'edit',
'proj_yy': fields[0],
'client': fields[1],
...}
if re.match(vfx_pattern, filename): # Check if file is a VFX prev
print("\nFile is a VFX prev. Filename: {}".format(filename))
fields = filename.split("_")
return {'type': 'vfx',
'seq_nr': fields[0],
'seq_name': fields[1],
...}
您的正则表达式很可能可以使用捕获组来定义,以避免随后拆分文件名的需要;如果模式匹配,则返回值将已包含相关组件。
然后在您的主程序中:
import get_asset_type_v001
filename = sample_vfx_filename
result = get_asset_type_v001.get_asset_type(filename)
if result['type'] == 'vfx':
print('_'.join([result['seq_nr'], result['seq_name'], ...]))

TA贡献1873条经验 获得超9个赞
具有捕获组的选项:
def get_asset_type(filename): # V003
"""Check filename for asset type"""
n = re.match(edit_pattern, filename)
if n: # Check if file is a edit prev
print("\nFile is an Edit prev. Filename: {}".format(filename))
fields = filename.split("_")
return {'type': 'edit',
'proj_yy': n.group('proj_yy'),
'client': n.group('client'),
'show': n.group('show'),
'edit_version': n.group('edit_version'),
'edit_stage': n.group('edit_stage'),
'tv': n.group('tv'),
'pv': n.group('pv'),
'date': n.group('date'),
}
m = re.match(vfx_pattern, filename)
if m: # Check if file is a VFX prev
print("\nFile is a VFX prev. Filename: {}".format(filename))
print(m.group('seq_name'))
return {'type': 'vfx',
'seq_nr': m.group('seq_nr'),
'seq_name': m.group('seq_name'),
'shot_nr': m.group('shot_nr'),
'shot_name': m.group('shot_name')
}
添加回答
举报