当前位置: 首页 > news >正文

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

相关文章:

  • 《基于深度学习的图像修复技术研究与应用-图像修复》—3000字论文模板
  • C++之“string”类的模拟实现
  • 二叉树中的深搜
  • IPFS:下一代互联网传输协议
  • ARM 嵌入式处理器内核与架构深度剖析(2): ARM 处理器架构剖析
  • LOCKUP的场景和典型结构
  • 深入探讨 Docker 层次结构及其备份策略20250309
  • 【C++】C++11部分
  • 基于SpringBoot的在线付费问答系统设计与实现(源码+SQL脚本+LW+部署讲解等)
  • 【keil】一种将STM32的armcc例程转换为armclang的方式
  • 快速从C过度C++(一):namespace,C++的输入和输出,缺省参数,函数重载
  • 躲藏博弈:概率论与博弈论视角下的最优策略选择
  • PHP:格式化JSON为PHP语法格式
  • 【深入解析Inception网络:从V1到V3的理论演进与对比,包含pytorch实现Inception模块的代码】
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(11):(1)「~ておく」的基本用法 (2)区分:一些列举的
  • Ragflow技术栈分析及二次开发指南
  • 2025-ICLESCTF-WP
  • CUDA原子操作
  • PDFMathTranslate安装使用
  • 【python】异常捕获和处理
  • 吴玉凤获任杭州市政协副秘书长,此前担任富阳区委书记
  • 三人在共享单车上印小广告被拘,北京警方专项打击非法小广告
  • 江南考古文脉探寻
  • 特朗普政府涉税改法案遭众议院预算委员会否决
  • 河南信阳:对违规吃喝问题不遮丑不护短,露头就打、反复敲打
  • 外企聊营商|威能集团:公平环境增“暖”意