Python3 将中文文件变成英文文件

契机:程序员再很多情况下,需要把同事给的文件,改成英文名,所有想写个
思路:查找文件夹下的全部中文文件,进行改英文名(通过百度翻译)
缺陷:百度翻译很差,同种中文带点数字,就导致翻译不一致,其实这个脚本用处不大(起码对我来说,并不能帮助我不需要改文件名的窘境)
扩展:1.也可以同时改文件夹,但文件夹会改变路劲,有很多办法解决,比如统计之后再改名,不想写,因为百度翻译无法,满足我。2.当然通过自建库,也·会提高效率,比如(翻译的背景是background,你可以直接bg),但太麻烦,得不偿失。

考虑平时中有人会使用到不同系统下的路径差异("/“或者”\")提供一个方法(我平时也是使用两种系统,工作一般是mac,所以是win的后续路径哪里改下,或者加入这个判断吧,我就不加了)

 if(platform.system()=='Windows'):
   print('Windows系统')
 elseif(platform.system()=='Linux'):
   print('Linux系统')
 else:
   print('其他')

由于模块装太多了,我这些都没装,我也不知道需要哪些模块,看报错自己装吧

    import os
    import sys
    import http.client
    import hashlib
    import json
    import urllib
    import random

    def list_all(dir_name):         
        for dirpath, dirnames, filenames in os.walk(dir_name):
            for filename in filenames:
                # 判定中文
                if '\u4e00' <= dirname <= '\u9fff':
                    new_name = baidu_translate(filename)
                    src_path = dirpath + '/' + filename
                    dest_path = dirpath + '/' + new_name
                    print(src_path + '->' + new_name)
                    os.rename(src_path, dest_path)

    # 百度翻译
    def baidu_translate(content):
        appid = “百度ID” 自己去申请 (免费的)
        secretKey = “百度Key” 自己去申请 (免费的)
        httpClient = None
        myurl = '/api/trans/vip/translate'
        q = content
        fromLang = 'zh' # 源语言
        toLang = 'en' # 翻译后的语言
        salt = random.randint(32768, 65536)
        sign = appid + q + str(salt) + secretKey
        sign = hashlib.md5(sign.encode()).hexdigest()
        myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign
        
        try:
            httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
            httpClient.request('GET', myurl)
            # response是HTTPResponse对象
            response = httpClient.getresponse() 
            jsonResponse = response.read().decode("utf-8")# 获得返回的结果,结果为json格式
            js = json.loads(jsonResponse) # 将json格式的结果转换字典结构
            dst = str(js["trans_result"][0]["dst"]) # 取得翻译后的文本结果
            return dst # 打印结果
        except Exception as e:
            print(e)
        finally:
            if httpClient:
                httpClient.close()

    if __name__ == '__main__':
        print(sys.argv)
        if len(sys.argv) == 1:
            print('must has name dir')
            exit(-1)
        if len(sys.argv) >= 2:
            list_all(dir_name)

只改文件,没改文件夹,直接改文件夹会导致搜索路径发生改变,导致遍历失败,,,,先改文件,再改文件夹也是不行的(文件夹有多级目录),,,因为写完发现对我没用,没改进,,,提供个思路:保存需要改的路径,在根据高级目录先改名,再低级目录改名

上一篇:C#5.0异步编程 HttpClient IP代理验证原码


下一篇:Centos8系统中du命令详解