Bonjour,
je voulais savoir s'il était possible de récupérer les messages d'erreur de Python en Français, ou dans une autre langue. Je doute que non mais on ne sait jamais...
Bonjour,
je voulais savoir s'il était possible de récupérer les messages d'erreur de Python en Français, ou dans une autre langue. Je doute que non mais on ne sait jamais...
Parles-tu des messages des exceptions ?
Dans la plupart des cas, les messages d'erreur des exceptions sont codés en dur dans les sources. Ya ptet un fou ou deux qui les a traduit pour chaque langue cela dit :p Mais bref, tu risques pas d'en croiser bcp en français.
Pour le coup, je crois que je mettrais cette question dans le top 5 des questions les plus cons que j'ai pu poser en informatique.Merci de m'avoir remis dans le droit chemin.
![]()
Il y a un message d’erreur en français dans le premier post.
Je doute que non = Je doute que ce soit non = Je pense plutôt que c’est oui
À n’en pas douter.
Comme quoi il serait de temps que je fasse une mise à jour...![]()
Rien ne t'empêche de récupérer les erreurs et de les traiter avant que le système le fasse:
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 nb=raw_input("donner un nombre") try: nb=int(nb) except ValueError: print "Ce n'est pas un nombre"
Ce qu'on trouve est plus important que ce qu'on cherche.
Maths de base pour les nuls (et les autres...)
Oui et non. Voilà la motivation de ce post.
Je développe un projet pour m'aider à rédiger des documents scientifiques. Pour aller au-delà des limites imposés par mon langage de rédaction, j'ai ajouté les deux possibilités suivantes :
- L'utilisateur peut taper du code Python afin d'ajouter la sortie console via des print là où le script est tapé dans le document.
- Un module permet de taper des algorithmes via un langage de programmation à la Python, mais simplifié, pour répondre aux "faibles" fonctionnalités nécessaires en algorithmique.
Dans le 1er cas, cela ne me gêne pas de renvoyer à l'utilisateur les erreurs Python car il connaît Python.
Par contre dans le 2nd cas, je vais traduire en Python les algorithmes simples pour les tester, et j'aurais aimé renvoyer les éventuelles erreurs en français car dans ce 2nd cas, l'utilisateur n'est pas forcément un programmeur Python.
Ceci étant tapé, je me dis qu'il suffirait de répertorier les erreurs rencontrables avec des algos traduits en Python. La liste ne doit pas être longue. Je verrais ça le moment venu.
Merci à tous.
Tu pourrais peut-être essayer un décorateur.
Tu listes toutes les erreurs que tu veux intercepter et tu les places dans des clauses except suivant le bloc try du décorateur 'FrenchError' avec les messages appropriés.
Voici un exemple où je traite une seule erreur:
Après il suffit de 'décorer' tes fonctions avec FrenchError
Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 def FrenchError(func): """Francisation des messages d'erreurs systèmes standard-un exemple""" def decorated(*args, **kwargs): try: func(*args,**kwargs) except ValueError: print "Ce n'est pas un nombre" return func return decorated def standarderror(): nb=raw_input("donner un nombre") nb=int(nb) return nb @FrenchError def frenchvariant(): nb=raw_input("donner un nombre") nb=int(nb) return nb frenchvariant() standarderror()
Ce qu'on trouve est plus important que ce qu'on cherche.
Maths de base pour les nuls (et les autres...)
Bonjour,
je dirais juste que je suis "frenchperdu" avec ces décorateurs. J'avais vu un tuto vidéo sur M6 il y a peu mais j'avais pas tout saisis des explications de la Valérie...
Plus sérieusement, les décorateurs, comment ça marche ? Existe-t-il un bon tuto. sur le sujet ? Zavoven peux-tu donner un autre exemple si tu as le temps ?
Le mieux c'est encore la doc officielle, progressive et exhaustive.
http://www.python.org/dev/peps/pep-0318/
Si tu veux faire rapide, en gros un décorateur prend en argument une fonction et retourne une fonction (la fonction 'décorée').
Un autre exemple facile à comprendre.
Si tu veux mesurer l'efficacité d'une fonction tu es obligé de commencer au début du corps par:
start = time.time()
puis à la fin
end=time.time()
puis duration=end-start
et tu fais afficher juste avant l'instruction return la valeur de duration.
Si tu veux mesurer les temps d'exécution pour toutes les fonctions d'un même module, tu es obligé de modifier chacune d'elles comme il est dit plus haut.
Un décorateur est fait pour 'envelopper' une fonction, ainsi je peux définir le le décorateur
'time_this'
Une fois pour toute.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def time_this(func): """The time_this decorator""" def decorated(*args, **kwargs): start = time.time() result = func(*args, **kwargs) print "Ran in", time.time() - start, "seconds" return result return decorated
Par la suite si je veux mesurer l'efficacité d'une fonction particulière il me suffit de faire précéder sa définition par l'annotation @time_this, comme ceci.
Une fois ta mise au point terminée tu vires le décorateur et ta fonction redevient 'normale'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 @time_this def count(until): """Counts to 'until', then returns the result""" print "Counting to", until, " " num = 0 for i in xrange(to_num(until)): num += 1 return num
Une utilisation classique est l'exécution contrôlée (la 'trace' des fonctions). Tu peux te bricoler un debugger très vite en décorant tes fonctions avec @trace. Le décorateur 'trace' enveloppe la fonction 'truc' de façon à ce que d'entrée il fait afficher: "exécution de la fonction 'truc' avec les arguments ...., ....", et en sortie tu peux faire afficher "sortie de la fonction" avec les arguments et lister les arguments, tu peux ainsi vérifier que la fonction modifie ses arguments comme tu le souhaites ou au contraire découvrir qu'elle les modifie alors que tu ne le souhaites pas.
J'ai pensé que dans ton cas, ce pouvait être intéressant. Tu peux définir un décorateur qui intercepte une ou plusieurs exceptions 'standard' (celles que tu prévois) et les traiter à ta mode. Par la suite pour que ta fonction acquière la possibilité, par exemple de délivrer des messages d'erreur en français, tu appliques simplement ce décorateur.
Ce qu'on trouve est plus important que ce qu'on cherche.
Maths de base pour les nuls (et les autres...)
"J'a tout compris".Merci pour l'exemple et les explications "on-ne-peut-plus-clair".
![]()
Partager