应用Python批量修改文件夹内文件名

整理音乐文件时,临时遇到需要批量修改文件名,就应用Python来完成了。

# 批量修改文件名的一部分

  • 识别就文件名中需要替换的字符,并替换成新字符,输出新文件名。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import os


def rename\_files\_in\_folder(folder\_path, old\_string, new\_string):
"""
批量修改文件名中的一部分字符串。

:param folder\_path: 文件夹路径
:param old\_string: 需要被替换的字符串
:param new\_string: 新的字符串,用于替换旧字符串
"""
for filename in os.listdir(folder\_path):
if old\_string in filename:
os.rename(os.path.join(folder\_path, filename),
os.path.join(folder\_path, filename.replace(old\_string, new\_string)))


# 使用示例
# 假设我们要在当前目录下的"example\_folder"中将所有包含"old"的文件名替换为"new"
folder = "/Volumes/music/韩红最-令人感动的专辑《醒了》" # 文件夹路径
old\_str = "mp3" # 需要被替换的字符串
new\_str = ".mp3" # 新的字符串
rename\_files\_in\_folder(folder, old\_str, new\_str)
  • 识别旧文件名中的数字序号并删除,输出不含序号的新文件名。
1
2
3
4
5
6
7
8
9
10
11
12
13
import os
import re

def remove\_numbers\_from\_file\_names(directory):
for filename in os.listdir(directory):
if re.match(r'\d+', filename): # 匹配文件名开头的数字序号
number\_pattern = re.compile(r'^\d+') # 编译正则表达式以提高性能
new\_filename = re.sub(number\_pattern, '', filename) # 删除序号
os.rename(os.path.join(directory, filename), os.path.join(directory, new\_filename)) # 重命名文件

# 使用示例
directory\_path = '/Volumes/music/韩红最-令人感动的专辑《醒了》' # 替换为你的文件夹路径
remove\_numbers\_from\_file\_names(directory\_path)