首页 > 解决方案 > 如何在 Python 中重命名文件名的一部分

问题描述

我正在尝试使用 Python 重命名许多文件,以便它们遵循如下所示的新命名约定:

~/directory/yyyy + qq + directory_name + ' Letter'.

现在,它们采用以下格式:

~/directory/directory_name + yyyy + qq + ' Letter'.

例如,我有一个名为 的目录/Users/Test/rename_test/Salmon 2,其中包含以下文件:

我想将所有这些文件重命名为:

我已经研究过 usingos.split来提取位置[-2][-3]- 因为它们应该始终是qqyyyy - 然后通过将它们移动到位置来重命名文件[0][1]. 但是我有数百个目录和数千个文件,所以我担心一个错字或偏离当前约定的文件可能会导致错误。

那么解决这个问题的最佳方法是什么?

标签: pythonsplitrenameglob

解决方案


您的想法基本上是合理的 - 但您可以添加至少两个步骤以使其更安全:

  1. 使用一个正则表达式来检测您的格式并在不匹配时引发错误。例如,您的正则表达式可能如下所示:

    ^鲑鱼 2 \d{4} Q\d{1} 字母

您需要通过包含当前目录名称的变量替换 Salmon 2

  1. 添加“试运行”模式——转换只是打印到标准输出——这样你就可以看到会发生什么。

  2. 无论您做什么,请先备份。

奖励:我可能会使用 pathlib 及其命令来完成这项工作 - 它是一个比旧的“文件名只是字符串”方法更通用的接口。


推荐阅读