python 3 googletransが時報を超える問題と翻訳ツールの最適化方案にソースを添付します。


一.問題:
Googleの翻訳インターフェースを呼び出すスクリプトを書く時、いつも間違えました。googletransというモジュールのTranslateを使っています。プログラムが実行されたら、タイムアウトのエラーを報告します。
Traceback(most recent call last):File「E:/Pycharm Project/MyProject/Translate/translate_」test.py「ライン3、in<module>relt=translator.translate(''504;녕녕;세세세騷;?;騷;세;ƍ;ƍ')File」D:\python 3\site-package\google\googles\client.pytranslate(text、dest、src、kwargs)File「D:\python 3\lib\site-packages\googlectures\client.py」、line 78、in_tranlate token=self.token_acquirer.do(text)File「D:\python 3\lib\site-packages\google trans\gtoken.py」,line 194,in do self.uuudate()File"D:\python 3\lib\site-packages\google trans\gtoken.py"line 54,in_udate r=self.client.get File“D:\python 3\lib\site-packages\httpx\uclient.py「line 763、in get timeout=timeout、File」D:\python 3\lib\site-packages\httpx\uclient.py"line 601,in request request,auth=auth,allow_redirects=allow_redirects,timeout=timeout,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"は、ライン621、in send request、auth=auth、timeout=timeout、allow_redirects=allow_redirects,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 648,in send_handling.redirects request,auth=auth,timeout=timeout,history=history File"D:\python 3\lib\site-packages\httpx\\uclient.py"LINE 684,in send_handling.auth reponse=self.send_シングルス.request File「D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 719,in send_シングルス.request timeout=timeout.as_dict()は、File"D:\pythone 3\lib\site-packages\httpcore\u 0026 quot;sync\connection_pool.py「line 153、in request method、url、headers=headers、stream=stream、timeout=timeout File」D:\pythone 3\lib\site-packages\tpcore\u 0026 quot;sync\connection.py"line 65,in request self.socket=self.uopen_socket File「D:\python 3\lib\site-packages\http core\u 0026 quot;sync\connection.py"line 86,in_open_socket hostname,port,ssl_context,timeout File"D:\python 3\lib\site-packages\http core\u 0026 quot;backends\sync.py"line 139,in open_tcp_stream return SyncSocketStream(sock=sock)File「D:\python 3\lib\contextlib.py」,line 130,in_exit_uself.gen.throw File「D:\python 3\lib\site-package\http core\u 0026 quot;exceptions.py"line 12,in map_exceptionsライヴto_exc(exc)from None http core.uexceptions.Connect Timeout:timed out
二.解決方法:
 1.解決方法を探す
いろいろな資料を調べた結果、googleの翻訳がインタフェースを更新したことが分かりました。以前使っていたgoogle transはもう使えなくなりました。しかし、ネット上のオオカミさんはもう新しい方法を開発しました。
https://github.com/lushan88a/google_transnew
この道で感謝します。
2.使用解決方法
cmdに以下のコマンドを入力すればいいです。
pip install googleググtransnew
三.コード(最適化)

from google_trans_new import google_translator
from multiprocessing.dummy import Pool as ThreadPool
import time
import re
"""
        google_trans_new
             
    len(text)>5000   
"""
class Translate(object):
 def __init__(self):
 	#                 
  self.txt_file='./test.txt'
  self.aim_language='zh-CN'
  
	#          
 def read_txt(self):
  with open(self.txt_file, 'r',encoding='utf-8')as f:
   txt = f.readlines()
  return txt
	
	#      ,    
 def cut_text(self,text):
  #      ,    5000      
  if len(text)==1:
   str_text = ''.join(text).strip()
   #             5000
   if len(str_text)>5000:
    #              5000      
    result = re.findall('.{5000}', str_text)
    return result
   else:
    #                  5000,     text
    return text
   """
         ,    
    (1)        5000
   (2)        5000,        5000
   """
  else:
   result = []
   for line in text:
    # (1)   
    if len(line)<5000:
     result.append(line)
    else:
     #  (2)   ,    ,      
     cut_str=re.findall('.{5000}', line)
     result.extend(cut_str)
   return result

 def translate(self,text):
  if text:
   aim_lang = self.aim_language
   try:
	   t = google_translator(timeout=10)
	   translate_text = t.translate(text, aim_lang)
	   print(translate_text)
	   return translate_text
   except Exception as e:
    print(e)

def main():
 time1=time.time()
 #      
 pool = ThreadPool(8)
 trans = Translate()
 txt = trans.read_txt()
 texts = trans.cut_text(txt)
 try:
  pool.map(trans.translate, texts)
 except Exception as e:
  raise e
 pool.close()
 pool.join()
 time2 = time.time()
 print("      {}    ,    {:.2f} s".format(len(texts),time2 - time1))

if __name__ == "__main__" :
 main()
テストテキストを置いてきました。http://xiazai.jb51.net/202012/yuanma/test.rar
自分でダウンロードできます。
四.運転結果
在这里插入图片描述
五.まとめ
このページではまずgoogle transモジュールを呼び出してエラーを報告する問題を解決しました。そして、新しいgoogle翻訳モジュールを使ってコードを作成しました。そして、私のこの文章の中で翻訳テキストの長さは5000を超えてはいけないという問題を解決しました。