如何从glob匹配的weights_epoch_*.tf.index文件名中提取最大数字
从glob匹配的权重文件中提取最大epoch值
要从model_dir.glob('weights_epoch_*.tf.index')返回的文件路径中找出最大的epoch数字,可通过以下两种简洁方法实现:
方法一:字符串拆分(适合固定格式文件名)
利用pathlib.Path的属性拆分文件名,提取数字后转成整数再取最大值:
from pathlib import Path # 假设model_dir是已初始化的Path对象 max_epoch = max( int(path.stem.split('_')[2]) for path in model_dir.glob('weights_epoch_*.tf.index') ) print(max_epoch) # 输出:49
说明:
path.stem获取文件的主干名(不含最外层后缀),比如weights_epoch_49.tf.index的stem是weights_epoch_49.tfsplit('_')[2]将主干名按下划线拆分,取第三部分得到数字字符串"49"- 转成整数后,直接用
max()从生成器中提取最大值
方法二:正则表达式(适配格式小变动)
如果文件名格式可能有细微调整,用正则匹配数字更鲁棒:
import re from pathlib import Path # 匹配weights_epoch_后的连续数字 epoch_pattern = re.compile(r'weights_epoch_(\d+)\.tf\.index') max_epoch = max( int(epoch_pattern.search(path.name).group(1)) for path in model_dir.glob('weights_epoch_*.tf.index') ) print(max_epoch) # 输出:49
说明:
- 正则表达式中的
(\d+)会精准捕获文件名里的连续数字 path.name获取完整文件名,search()找到匹配项后,group(1)提取捕获的数字字符串,转成整数后取最大值
内容的提问来源于stack exchange,提问作者Antti Rytsölä
相关产品推荐
相关产品推荐

