0.背景
整理东西时,发现了尘封多年的psp,随之想重温FC。。。。。。(省略一万字,哈哈),总之就是需要把文件夹内的所有文件的文件名换成繁体的。由于文件数量较大,这就让我想到了,繁琐重复的操作都可以交给代码来搞,所以,我就用刚刚了解的Python来解决。
1.调研
凭着我对代码的直觉,我觉得绝对可以完成。
- 调研Python简体转换繁体的可行性
- Python的os操作(这块我不是很熟)
PS.本以为是个小项目,其实是个小脚本而已,还是实战能力弱呀。
2.环境
Python 3.6.2(32位)
Windows 7(64位)
PyCharm 2017.2(64位)
3.设计分析
3.1 设计步骤:
①. 获取文件名
②. 文件名转换繁体(重点)
③. 重命名
3.2 分析
其中不能轻松操作的是第二点②文件名转换繁体,问度娘,还是有很多小伙伴玩过这个的,我只需要简体转繁体的功能。利用nstools项目里的两个文件即可。
nstools项目:https://github.com/csdz/nstools
- 下载中文简体和繁体转换所需Python库zh_wiki.py 和 langconv.py
zh_wiki.py:https://github.com/csdz/nstools/blob/master/zhtools/zh_wiki.py
langconv.py:https://github.com/csdz/nstools/blob/master/zhtools/langconv.py
下载文件方式:先下载nstools项目,再在项目文件里复制出这两个文件出来即可; - 将下载的 langconv.py 和 zh_wiki.py,放在Python脚本所在目录即可使用。
4.脚本源码
# -*- coding: utf8 -*-
# Created by Y.W. on 2017/10/15 21:20.
from langconv import *
import os
"""
目的:更换FC游戏的名称(简体)为繁体中文
步骤:
1.先获取文件名
2.简体转换繁体
3.重命名
"""
path = "F:/迅雷下载/PSP模拟FC游戏大合集/FC-NES/300个HACK包 - 繁体"
def simple2tradition(line):
# 将简体名字转换成繁体
line = Converter('zh-hant').convert(line)
# 报错才注释掉
# line = Converter('zh-hant').convert(line.encode('utf-8'))
# line = line.encode('utf-8')
return line
if __name__ == '__main__':
for file in os.listdir(path):
# 获取文件名,name包括文件名和后缀名
name = os.path.splitext(file)
# 获取转换后文件名的繁体
new_name = simple2tradition(name[0])
# 重命名,繁体文件名+原后缀名
os.rename(os.path.join(path, file), os.path.join(path, str(new_name) + name[1]))
print("success!")
5.踩坑
5.1 转换方法的报错信息:
初步度娘是编码问题,不需要经过encode转换,改之。
红框框为注释掉的,改成了红框框上面那一行就行。
5.2 思维上的坑
思考不全面,本想着每个步骤都封装成单个方法,再在主方法里调用。可是后来经过卡壳发现,这一次脚本是一个遍历过程,主方法写起来也就4行而已,实战经验不足。