在 Python 中将字符串从文件名移动到文件名末尾

问题描述 投票:0回答:1

如果我的文件标有:

2023_FamilyDrama.pdf
2024_FamilyDrama.pdf
2022-beachpics.pdf

我希望他们是

FamilyDrama_2023.pdf
FamilyDrama_2024.pdf
beachpics_2022.pdf

到目前为止,我知道如何从文件名的开头删除字符串,但不知道如何保存它并将其附加到字符串的末尾。

import os
for root, dir, fname in os.walk(PATH):
    for f in fname:
        os.chdir(root)
        if f.startswith('2024_'):
            os.rename(f, f.replace('2024_', ''))
python filenames
1个回答
0
投票

这似乎是使用

re.sub
和 lambda 来重写名称的好地方。当然,这不会检查以确保文件名匹配该模式。

>>> filenames = ["2023_FamilyDrama.pdf", "2024_FamilyDrama.pdf", "2022-beachpics.pdf"]
>>> import re
>>> [                                                                           ...   re.sub(
...     r'(\d{4})[_\-](.+)(\..+)', 
...     lambda m: f"{m.group(2)}_{m.group(1)}{m.group(3)}", 
...     filename
...   )
...   for filename in filenames
... ]
['FamilyDrama_2023.pdf', 'FamilyDrama_2024.pdf', 'beachpics_2022.pdf']
© www.soinside.com 2019 - 2024. All rights reserved.