#1 Le 11/09/2019, à 10:26
- Compte supprimé
[résolu]Je cherche à utiliser google traduction depuis Python
Bonjour,
Je cherche à utiliser google traduction depuis un script python pour traduire des mots mais aussi pour les prononcer.
J'ai essayé le module googletrans mais il ne me permet pas de prononcer les mots/phrases (ou je n'ai pas su m'y prendre...) et ne propose pas une traduction étendue..
Le programme trans pour shell serait parfait cependant je n'arrive pas à le mettre en oeuvre depuis python . Je n'ai pas le retour que j'attends ...
In [2]: import os
In [3]: os.popen('trans :fr word')
Out[3]: <os._wrap_close at 0x7f5eef2d1588>
In [4]:
Pourquoi ? et comment dois je m'y prendre?
edit : il faut utiliser l'option w ---> os.popen('trans :fr word','w')
Par ailleurs si vous connaissez un module python permettant de faire les mêmes choses, je suis preneur ..
Merci
Dernière modification par Compte supprimé (Le 12/09/2019, à 10:59)
#2 Le 11/09/2019, à 11:45
- Compte supprimé
Re : [résolu]Je cherche à utiliser google traduction depuis Python
edit : il faut utiliser l'option w ---> os.popen('trans :fr word','w')
Si dans ipython j'ai bien le retour que j'attends, je n'arrive toujours pas à mettre en oeuvre la commande** dans mon script python...
** à noter que dans Ipython le prompt ne revient pas sans action de ma part
Dernière modification par Compte supprimé (Le 11/09/2019, à 11:47)
#3 Le 11/09/2019, à 11:48
- melixgaro
Re : [résolu]Je cherche à utiliser google traduction depuis Python
Salut,
Utilise plutôt subprocess pour les appels externes.
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#4 Le 11/09/2019, à 11:51
- Compte supprimé
Re : [résolu]Je cherche à utiliser google traduction depuis Python
Salut melixgaro,
merci je vais regarder comment l'utiliser ..
#5 Le 11/09/2019, à 14:34
- melixgaro
Re : [résolu]Je cherche à utiliser google traduction depuis Python
Ça supplante normalement les manips à base de popen. Ça offre plus de fonctions, c'est plus souple, ça produit code plus lisible (normalement).
Je n'ai pas le temps de trop regarder ta vraie question (a propos de google traduction).
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#6 Le 11/09/2019, à 15:27
- Compte supprimé
Re : [résolu]Je cherche à utiliser google traduction depuis Python
J'adopte
...pour mettre la sortie de la commande dans une variable :
result = subprocess.check_output('trans -brief hello', shell = True)
print(result.decode())
--> Bonjour
forme à utiliser pour une classe:
self.mot = 'hello'
traduction = subprocess.check_output(['trans', '-brief', self.mot])
Dernière modification par Compte supprimé (Le 11/09/2019, à 15:28)
#7 Le 11/09/2019, à 15:36
- melixgaro
Re : [résolu]Je cherche à utiliser google traduction depuis Python
et pour passer des commandes, je procède ainsi
import shlex
cmd = "commande -o option arg1 arg2"
result = subprocess.check_output(shlex.split(cmd))
shlex.split découpe la commande comme il faut et passe le résultat à subprocess
Dans ton cas, tu peux très bien faire
cmd = "trans -brief {:s}"
result = subprocess.check_output(shlex.split(cmd.format(self.mot)))
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#8 Le 11/09/2019, à 15:56
- Compte supprimé
Re : [résolu]Je cherche à utiliser google traduction depuis Python
Merci . Cela peut m'être utile pour simplifier la lecture/ecriture du code dans certains cas ..
edit: Je passe le sujet en résolu . Je peux faire avec trans shell car c'est pour une application personnelle qui restera sur mon ordi et donc peut ne pas être portable.
Par contre, si vous connaissez un truc équivalent en python, je prends .
Dernière modification par Compte supprimé (Le 12/09/2019, à 11:08)
#9 Le 12/09/2019, à 18:46
- Compte supprimé
Re : [résolu]Je cherche à utiliser google traduction depuis Python
Re,
Je bloque sur un détail ...
J'aimerai que ma variable result (#6), une fois dans un Label tkinter, ait la même apparence que lors d'un affichage écran avec un print...
Comment faire?
import tkinter as tk
import subprocess
mot = 'resource'
traduction = subprocess.check_output(['trans', mot])
print(traduction.decode(encoding='UTF-8'))
root = tk.Tk()
label = tk.Label(root, text=traduction.decode(encoding='UTF-8'))
label.grid()
root.mainloop()