Python批量将中文文件名称转为英文、拼音的方法
本文介绍基于Python语言,批量将文件夹下的文件的名称由中文汉字转为英文(拼音)的方法。
首先看一下我们的需求。现在有一个文件夹,其下具有大量的文件;其中文件的名称,有的是全为英文,有的是既有英文也有中文,有的则是均为中文。如下图所示。
我们现在希望,对于每一个文件,将其文件名中的中文汉字(若有)改为英文字母,其他均不变。
本文所需代码如下。当然,我这里就是直接将中文转为其拼音了;如果需要转换成标准、正式的英文,那可以考虑在代码中加入翻译API,实现中文自动翻译后再重命名。
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 3 21:28:04 2025
@author: fkxxgis
"""
import os
from pypinyin import lazy_pinyin
def convert_filename_to_pinyin(dir_path):
# 遍历给定目录下的所有文件和文件夹
for filename in os.listdir(dir_path):
# 获取文件或文件夹的完整路径
old_path = os.path.join(dir_path, filename)
# 如果是文件,则处理其名称
if os.path.isfile(old_path):
# 将文件名中的中文字符转换为拼音
new_filename = ''.join(lazy_pinyin(filename))
new_path = os.path.join(dir_path, new_filename)
# 重命名文件
os.rename(old_path, new_path)
print(f'Renamed: {filename} -> {new_filename}')
# 如果需要对子目录中的文件也进行相同操作,可以递归调用此函数
elif os.path.isdir(old_path):
convert_filename_to_pinyin(old_path)
# 指定要处理的文件夹路径
directory_path = r'E:\BaiduSyncdisk\99_Blog\02_文章素材\文件改为英文'
convert_filename_to_pinyin(directory_path)
代码整体逻辑也是很简单,直接使用pypinyin
库中的lazy_pinyin
函数用于将中文字符转换为其对应的拼音表示形式;如果没有安装这个库的话,可以通过如下代码安装。
pip install pypinyin
在前述代码中,我们通过convert_filename_to_pinyin
函数,实现的汉字转英文(拼音)。首先,使用os.listdir(dir_path)
获取指定目录下的所有文件和子目录名称,并通过os.path.join(dir_path, filename)
构建每个文件或目录的完整路径;随后,使用os.path.isfile(old_path)
判断当前项是否为文件。
如果是文件,则使用lazy_pinyin(filename)
将文件名中的中文字符转换为拼音,并将结果拼接成新的文件名;随后,使用os.rename(old_path, new_path)
对文件进行重命名。
此外,为了解决文件夹嵌套文件夹的情况,所以加一个判断:如果当前项不是文件、而是目录(也就是文件夹),则递归调用convert_filename_to_pinyin
函数,对该目录下的文件执行相同的操作。
执行上述代码,可以看到文件夹内每一个文件的名称中的中文汉字都转为了拼音,如下图所示。
当然,对于名称中含有标点符号的文件,上述代码并没有转换标点符号的格式——例如上图中最后一个文件,其名称中的括号和冒号都还是中文的全角符号,且顿号也没有消除(英文中没有顿号)。因为我当初的需求不涉及标点符号的转换,所以我没有进一步研究;大家如果有这一需求,可以进一步研究一下看看如何转换——不知道有没有转换符号格式的Python库,如果没有的话可以通过字典这一数据格式,枚举每一个标点符号转换前、后字符的对照关系,并对文件名加以字符匹配。
至此,大功告成。
欢迎关注:疯狂学习GIS