如果我的文件标有:
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_', ''))
这似乎是使用
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']