Skip to main content
 首页 » 编程设计

python之拆分文件名,更新日期,将文件名重新组合在一起,python

2025年05月04日18jyk

鉴于文件名列表是:

shortname = [H04_IF_FigF2_LCC_05Apr12_mm, H04_BS_IF_FigF2_LCC_05Apr12_mm_2, HH_IF_FigF2_SS_05Apr12_mm, D01_BS_IF_FigF2_LCC_05Apr12_mm_1, D01_BS_FigF2_Overview_05Apr12_mm] 

我想用每个下划线分割每个文件名:

for x,y in enumerate(shortname.split("_")): 

我想将日期更新为当前日期:

strftime("%d%b%y") 

然后使用下划线将它们全部粘合在一起,但我希望它能够以交互方式执行此操作,因为文件名的“部分”计数不同,日期“部分”所在的位置也是如此(即在第一个名字中,有 6 个“部分”,日期是第 5 个“部分”,在第二个名字中,有八个“部分”,日期是第 6 个“部分”)

我正在尝试使用枚举器来获取数字和文本字符串的列表。我试过获取 x 的范围并遍历每个文件名部分,但我坚持尝试将日期与其余部分隔离开来,然后如何以交互方式将这些部分粘合在一起。

有什么建议吗? 谢谢, 迈克

请您参考如下方法:

我只是尝试将所有内容解析为日期,然后在成功时更新:

import datetime 
 
shortnames = ['H04_IF_FigF2_LCC_05Apr12_mm',  
             'H04_BS_IF_FigF2_LCC_05Apr12_mm_2', 'HH_IF_FigF2_SS_05Apr12_mm',  
             'D01_BS_IF_FigF2_LCC_05Apr12_mm_1', 'D01_BS_FigF2_Overview_05Apr12_mm'] 
 
def update_time(name): 
    old_split = name.split('_') 
    new_split = [] 
    date_fmt = '%d%b%y' 
    new_date = datetime.datetime.strftime(datetime.datetime.now(), date_fmt) 
    for n in old_split: 
        try: 
            old_date = datetime.datetime.strptime(n, date_fmt) 
            new_split.append(new_date) 
        except ValueError: 
            new_split.append(n) 
    return '_'.join(new_split) 
 
>>> [update_time(filename) for filename in shortnames] 
['H04_IF_FigF2_LCC_10Apr12_mm', 'H04_BS_IF_FigF2_LCC_10Apr12_mm_2', 'HH_IF_FigF2_SS_10Apr12_mm', 'D01_BS_IF_FigF2_LCC_10Apr12_mm_1', 'D01_BS_FigF2_Overview_10Apr12_mm'] 

这样我就不必关心任何内部细节。