前端脚本!网站图片素材中文转英文

news/2025/6/19 17:45:21
  • 写网页的时候, 我们经常需要使用图片素材, 图片素材如果是中文名, 挂到服务器会会引发乱码, 我们需要将图片名称改为英文字符才可以使用
  • 而起名是一个世界级难题, 为图片素材起英文名更是一件极其蛋疼的事
  • 有些人英语不好, 直接用拼音命名, 而拼音闹出的笑话更是无法计量...

最近接手了一个项目, 图片素材全部是中文命名, 为了避开起名的困扰, 我写了一个脚本,问题迎刃而解, 这里分享给大家

脚本解决的问题

  • 可以为中文命名的图片起一个英文名
  • 可以批量为当前目录及其子目录下图片自动生成新的英文名
  • 新的英文名图片会被输出到新的目录, 不会对原素材有丝毫影响

源码

import os
import re
import copy
import shutil
from googletrans import Translator# 获取当前目录下所有的css文件路径
def getAllMd (file_dir):all_whole_path_files = []for root, dirs, files in os.walk(file_dir):for file in files:try:if (file[-4:] == ".png") or (file[-4:] == ".jpg"):file_info = [root+'/', file]all_whole_path_files.append(file_info)except Exception as e:print(e)return all_whole_path_files# 将中文转换为英文
def getRepName(path_file):# 暂时保留后缀extension_name = ''extension_name = path_file[1].split(".")[-1]# 无后缀的文件名path_file[1] = path_file[1][0:-len(extension_name)-1]# 实例化翻译translator = Translator()tmp_en_name = translator.translate(path_file[1], dest='en').text# 将数字和字母保存到最终的字符串中, 遇到空格则替换为中划线保存en_name = ''for en_name_str in tmp_en_name:# 将大写字母转换为小写字母en_name_str = en_name_str.lower()# 保留小写字母if re.match('[a-z]', en_name_str):en_name += en_name_str# 将空格转换为"-"elif en_name_str == " ":en_name += "-"else:pass# 补充后缀名path_file[1] = en_name + '.' + extension_namereturn path_file# 根据相对路径及新旧英文名 创建新文件
def createNewFile(whole_path_file, new_whole_path_file):# 在图片的同级目录, 创建一个enName的文件夹if os.path.exists(whole_path_file[0] + "./enName/"):passelse:os.makedirs(whole_path_file[0]+ "./enName/")# 拷贝创建新的文件shutil.copyfile(whole_path_file[0]+whole_path_file[1], new_whole_path_file[0]+"./enName/"+new_whole_path_file[1])def main():all_whole_path_files = getAllMd('./')for whole_path_file in all_whole_path_files:# 获取英文名new_whole_path_file = getRepName(copy.deepcopy(whole_path_file))print("旧的路径和英文名:", whole_path_file, "新的路径和英文名:", new_whole_path_file)# 根据相对路径及新旧英文名创建新文件createNewFile(whole_path_file, new_whole_path_file)if __name__ == '__main__':main()

这个脚本只是解决了我的问题, 如果有新的需求, 欢迎到这个脚本对应的Github提交需求, 也欢迎点个星, https://github.com/zhaoolee/zhToEnName


https://dhexx.cn/news/show-156335.html

相关文章

c# XML和实体类之间相互转换(序列化和反序列化)[砖]

link: http://blog.okbase.net/haobao/archive/62.html by: 好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改。 1234567891011121314151617181920212223242526272829303132333435…

andoid的socket测试为什么出现这个错误:java.net.ConnectException: failed to connect to /192.168.0.8

基于android的Socket通信: Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后&#x…

ABAP OO练习

继续我们的看实例学习abap面向对象编程.在此次的例子中,我们以雇员的工资为蓝图,设计一个程序,然后再一步一步的改进我们写的程序,使其有更好的扩展性以及维护性.该例中所使用的基类是employee类,其子类包括:boss类,不管工作多长时间,他总是有固定的周薪(好爽!).销售员类commis…

[Github 项目推荐] 一个更好阅读和查找论文的网站

机器学习发展到现在,已经积累了非常多的文章,特别是深度学习火起来后,每年新增加的论文非常多,如果需要研究某个领域,不仅需要阅读这个领域经典的论文,也必须时刻关注最新的学术进展,比如最近两…

解决: java.net.ConnectException: Connection refused: connect

java.net.ConnectException: Connection refused: connect 1. 报错如上。 2. 原因和解决: 1)端口号被占用:杀死占用端口号(一般为8080)的进程,释放端口;彻底关闭 Tomcat 服务器,或…

Spring中的@Transactional(rollbackFor = Exception.class)属性详解

序言 今天我在写代码的时候,看到了。一个注解Transactional(rollbackFor Exception.class),今天就和大家分享一下,这个注解的用法; 异常 如下图所示,我们都知道Exception分为运行时异常RuntimeException和非运行时异常…

Python面向对象编程学习笔记2

以上方式不推荐使用 以上方式不推荐使用 转载于:https://www.cnblogs.com/chickenwrap/p/10264932.html

更改Eclipse下Tomcat的部署目录

使用eclipse开发是因为机器不够用myeclipse,eclipse也比myeclipse清爽很多,启动速度也快。这里的搭建开发环境使用: Jdk1.6Tomcat6Eclipse JEE, 工作目录如下环境目录如下: 安装路径: C:\Java\Jdk1.6.0 C:\…

Redis 主从切换的集群管理

2019独角兽企业重金招聘Python工程师标准>>> Redis单点时,当一台机器挂机了,redis的服务完全停止,这时就会影响其他服务的正常运行。下面利用redis sentinel做一个主从切换的集群管理。 下面两段官方的说辞: Redis Sen…

sql server alter(转)

1、修改字段名: alter table 表名 rename column A to B 2、修改字段类型: alter table 表名 alter column 字段名 type not null 3、修改字段默认值  alter table 表名 add default (0) for 字段名 with values 如果字段有默认值,则需要先…