#encoding=UTF-8
#!/usr/bin/python
# encoding: utf-8
#filename: baidu-translate-gofile.py
#author: gaohaixiang
#writetime:202112012055# 注释
# 需要填写自己百度翻译的 appid 和 secretKeyimport http.client
import hashlib
import json
import urllib
import random
import re
import time
import os# 单次翻译大小为6000字节以内
def baidu_translate(content,filename):# 存放翻译错误的文件ff = open("翻译错误文件.txt","a+",encoding="UTF8")#print(content,"翻译函数内部打印content")appid = '**************'    # 需要填写自己的百度翻译的 appidsecretKey = '**************'    # 需要填写自己的百度翻译的 secretKeyhttpClient = Nonemyurl = '/api/trans/vip/translate'q = contentfromLang = 'en'  # 源语言toLang = 'zh'  # 翻译后的语言salt = random.randint(32768, 65536)sign = appid + q + str(salt) + secretKeysign = hashlib.md5(sign.encode()).hexdigest()myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign#print(myurl,"翻译函数内部打印myurl")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格式的结果转换字典结构#print(js,"翻译函数内部打印全部输出数据")dst = str(js["trans_result"][0]["dst"])  # 取得翻译后的文本结果#print(dst,"函数内部打印dst")  # 打印结果return dstexcept Exception as e:print(e,"内部错误打印e")ff.writelines(filename)ff.writelines("\n")finally:if httpClient:httpClient.close()ff.close()def openfile(fileinput,newfile,filename):list = []  ## 空列表# count=1fl = open(fileinput,"r",encoding="UTF8")lines = fl.readlines()fl.close()ff = open(newfile,"w",encoding="UTF8")# with open(fileinput, "r",encoding="UTF8") as fl:for line in lines:if line.startswith("//") or re.findall("//",line):#print(str(line))dst = baidu_translate(line.split("//")[1],filename)# list.append(dst)time.sleep(1.1)  # 不要频繁访问百度翻译# ff.writelines(line)# # ff.writelines(line.split("//")[0]+dst+"\n")translateString = "//" + " " + str(dst)#ff.writelines(str(line.split("//")[0]) + translateString + "\n")if str(dst) == "err:":ff.writelines(lines)else:ff.writelines(str(line.split("//")[0]) + translateString + "\n")else:#print(line)ff.writelines(line)ff.close()def ListFile(dirpath):ff = open("文件夹及文件名称","w",encoding="UTF8")for dirpath, dirnames, filenames in os.walk(dirpath):#print('文件路径', dirpath)#print('文件夹名字', dirnames)ff.writelines(dirpath+"\\"+"\n")for filename in filenames:#print('文件名', filename)ff.writelines(dirpath+"\\"+filename+"\n")ff.close()def ReadFile():file = open("所有go文件.txt","w",encoding="UTF8")ff = open("文件夹及文件名称", "r", encoding="UTF8")ffs = ff.readlines()for lists in ffs:#print(lists)if lists.endswith("\.go") or re.findall("\.go",lists):#print(lists)file.writelines(lists)ff.close()file.close()def ReadDate(pathfile):ff = open(pathfile,"r",encoding="UTF8")ffs = ff.readlines()for lists in ffs:print(lists)ff.close()def handleLines(filename):# 读取文件,并将文件的所有注释均放置于变量中ff = open(filename,"r",encoding="UTF8")ffs = ff.readlines()ff.close()a = 0traselateLine = """"""traselateLineList = []for liness in ffs:lines = str(liness)a = a+1if lines.startswith("//"):line = "***%s***" % a + lines.strip("\n") + " ABCDEFG "traselateLine = traselateLine + lineelif re.findall("//",lines):line = "***%s***" % a + "//  "+lines.split("//")[1].strip("\n") + " ABCDEFG "traselateLine = traselateLine + lineelse:pass#print("没有注释")if len(traselateLine) > 5000:traselateLineList.append(traselateLine)traselateLine = """"""if a == len(ffs):traselateLineList.append(traselateLine)return traselateLineListdef lineDataAppend(traselateLineList,filename):# 将每行的数据存放到裂变traselateLineListTotal = [] #存放总翻译后的每行的数据for traselateLineLists in traselateLineList:dst = ''# 若被翻译的行为空,则跳过if len(traselateLineLists) > 1:dst = baidu_translate(traselateLineLists,filename)else:pass#print(dst)traselateLaterLinesList = str(dst).split("ABCDEFG")print(len(traselateLaterLinesList))time.sleep(1.1)for linesLines in traselateLaterLinesList:traselateLineListTotal.append(linesLines)print(len(traselateLineListTotal))#print(traselateLineListTotal)return traselateLineListTotaldef fileDataWrite(filename,traselateLineListTotal):# 打开文件,读取相应的位置,然后匹配到 traselateLineListTotal 的数据,# 然后再写入该文件来完成整个的翻译ff = open(filename,"r",encoding="UTF8")ffs = ff.readlines()ff.close()file = open(filename,"w",encoding="UTF8")a = 0for liness in ffs:lines = str(liness)a = a+1if lines.startswith("//") or re.findall("//", lines):for traselateLineLines in traselateLineListTotal:traselateLineLineLists = traselateLineLines.split("***")if len(traselateLineLineLists) > 2:#print(traselateLineLineLists)traselateLineLineNumber = traselateLineLineLists[1]traselateLineLineListss = traselateLineLineLists[2].split("//")if len(traselateLineLineListss) > 1:if str(a) == traselateLineLineNumber:print(traselateLineLineNumber, "数字比较", a)translateString = "//" + " " + traselateLineLineListss[1]file.writelines(str(lines.split("//")[0]) + translateString + "\n")else:if str(a) == traselateLineLineNumber:print(traselateLineLineNumber, "数字比较", a)translateString = "//" + " " + traselateLineLineListss[0]file.writelines(str(lines.split("//")[0]) + translateString + "\n")else:#print(lines)file.writelines(lines)file.close()if __name__ == '__main__':statrttime = time.time()# file = "kubelet.go"# openfile(file,file)  # 输入文件路径# 要翻译的文件所处的目录dirpath = "D:\pycharmFile\json-iterator"#查找所有的文件ListFile(dirpath)#查找所有的go文件ReadFile()# # 文档翻译处理ff = open("所有go文件.txt","r",encoding="UTF8")ffs = ff.readlines()ff.close()# 存放已翻译的文件file = open("已翻译文件.txt","w",encoding="UTF8")for filenames in ffs:print(filenames)file.writelines(filenames)filename = filenames.strip("\n")#filename = "kubelet.go"# 读取文件,并将文件的所有注释均放置于变量中traselateLineList = handleLines(filename)# 将每行的数据存放到列表traselateLineListTotal = lineDataAppend(traselateLineList,filename)# 打开文件,读取相应的位置,然后匹配到 traselateLineListTotal 的数据,fileDataWrite(filename, traselateLineListTotal)file.close()endtime = time.time()print(endtime - statrttime)

翻译go项目代码英文注释相关推荐

  1. Spark Core项目实战(1) | 准备数据与计算Top10 热门品类(附完整项目代码及注释)

      大家好,我是不温卜火,是一名计算机学院大数据专业大二的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  2. VBA一键给代码加注释(翻译表名、字段名)

    背景: 本人做ETL,在接触新项目的时候,会同时翻看处理大量的sql脚本文件,面对动辄几百个字段名和表名,无法快速阅读理解代码,于是想把所有的表名和字段名添加上注释,这样可以快速看懂代码. 适用情况: ...

  3. 为啥国内程序员写的代码也用英文注释?

    目前国内越来越多的开发团队要求程序员采用英文来写注释,除了一些常规的原因(开发平台对于汉字的支撑不足等)之外,采用英文注释与开发团队国际化和开源要求这两个因素有密切的关系. 随着国内互联网企业的快速发 ...

  4. 为什么中国的程序员喜欢用英文写代码,甚至注释也用英文?

    为什么中国的程序员喜欢用英文写代码,甚至注释也用英文? 1.因为英语是国际通用的,用英语方便各国程序员. 2.因为英文才专业 3.因为语句只能用英文 4.因为变量名用英文方便外国同行看代码 5.因为英 ...

  5. 基于Python实现的网络爬虫项目——多线程下载小说并保存为txt文件(包含完整代码及注释)

    基于Python实现的网络爬虫项目--多线程下载小说并保存为txt文件(包含完整代码及注释) 一.确立预期目标 二.完成项目所需工具 三.项目需要解决的问题 问题一 问题二 问题三 问题四 问题五 问 ...

  6. c语言期中项目实战二—简易扫雷,思路分析加代码详细注释

    c语言期中项目实战二-简易扫雷,思路分析+代码详细注释 游戏介绍 项目步骤 模块化编程 设置菜单 设置棋盘 打印棋盘 布置雷 排查雷 总结及总代码和详细注释 游戏介绍 扫雷这个经典游戏,直到现在仍有很 ...

  7. python生成6位验证码随机数,需包含英文字母大写、小写和数字(含代码和注释)

    具体见代码和注释: def get_code():code_list = []# for i in range(10): # 0~9for i in range(48,57): #ASCII表示的数字 ...

  8. 【代码规范】google开源c\c++项目代码规范

    版权声明:版权声明:本文为博主原创文章,未经博主允许不得转载;https://blog.csdn.net/csdn_baotai https://blog.csdn.net/csdn_baotai/a ...

  9. HTML项目代码编写规范

    如果本文档中有任何错误的.不符合行规的,敬请斧正. 引言 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. 若您对本文档中任何内容有不明白的,或者感觉不合行规的,请您按以下格式 ...

最新文章

  1. Mac下firefox ssl_error_ssl_disabled
  2. 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡
  3. 运用C#生成docx格式的报表
  4. 几种常用的配电网络接线
  5. mysql如何查找某字段所在表
  6. WEBTIMER控件研究的心得:丢开书本做一个WebTimer
  7. oracle idm_批准Oracle IDM中的特定Web服务
  8. java参数传入的是一个类名_Java编程细节——泛型的定义(类、接口、对象)、使用、继承...
  9. 华为系统移动数据连接到服务器,怎样设置手机数据连接到服务器配置
  10. Asp.Net 4.0 SEO增强之 UrlRouting
  11. linux系统的drm配置mipi,Linux 进阶 DRM等.....
  12. java中的terminated_解决maven build 无反应,直接terminated的问题
  13. Jenkins HTML Publisher 插件
  14. 【故障诊断分析】基于matlab小波变换外圈轴承故障诊断【含Matlab源码 1678期】
  15. 计算机的码片是指什么作用,计算机通信作业共有四个站进行码分多址的CDMA通信4个站的码片 爱问知识人...
  16. 我的专业计算机作文700字,我的专业作文700字
  17. http请求报错Illegal character in query at index 303的解决方法
  18. 使用 VS Studio 2022 创建自己的 NuGet包,图片教程包教包会!
  19. 如何让多个视频同时倒放,并重新添加背景音乐
  20. WINSYS DAY02(03):如何配置文档的NTFS权限?

热门文章

  1. Vue-router的使用(vue3.0版本)
  2. 四种激光雷达技术的最新发展趋势
  3. Linux常用命令英文全称与中文解释 (pwd、su、df、du等)
  4. 分布电容对小信号的干扰解决方案
  5. MarkText ctrl+num 切换 标题级别快捷键 失效问题
  6. 我赢助手详解:抖音变现目前流行的是七种方式之直播变现和Ip变现
  7. 网上赚钱竞争那么激烈你一定要有自己的绝活!
  8. Kinect for Unity3d----KinectManager
  9. Excel·VBA多条件筛选组合结果
  10. PCL报错:C2248 “pcl::Registration<PointSource,PointTarget,Scalar>::setInputCloud”