Puisque tu insistes pour ne pas être le coupableil n'y a rien à dire, c'est python le fautif !
Puisque tu insistes pour ne pas être le coupableil n'y a rien à dire, c'est python le fautif !
Nouvelle info (à force on finira par s'en sortir): Tu utilises VisualCode !!! Nous qui pensions (naïvement je l'avoue) que pour programmer en Python tu utilisais Python...
Or VisualCode ce n'est pas du Python natif. On a déjà vu sur ce forum des soucis analogues avec ce RAD (suis en train de chercher les posts qui en parlent). Tu nous l'aurait dit immédiatement on te l'aurait dit tout aussi immédiatement mais bon, comme avec toi il faut tout deviner (en plus de continuer à se faire insulter par un mufle incapable de reconnaitre ses torts et qui dépasse même les limites de l'hypocrisie en allant jusqu'à se plaindre de nous dans un autre forum !!!)
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Mais dites-moi, est-ce que par hasard vous n'utilisez pas MicroPython ? Parce que là c'est encore une nouvelle information, et vu que c'est une implémentation spécifique de Python ça expliquerait vos déboires. Et quand vous travaillez avec deux IDE, et que l'un des deux fonctionne (Thonny comme par hasard), je ne suis pas persuadée que c'est le même environnement Python qui est exécuté dans tous les cas.
Peut-être que vous pouvez utiliser sys.print_exception à la place. Voir la doc: https://docs.micropython.org/en/v1.8...brary/sys.html
Avant de se poser ces questions, il faudrait au moins que le codeur fasse un minimum de tests ! J'ai l'impression d'avoir un débutant qui rencontre son premier bug fichier !
- erreur à open() ou read() ?
- que donne un file exists() ?
- si oui, et fstat() ?
Et, accessoirement, comme dit plus haut (mais le dev avec 40 ans de métier n'a pas encore essayéil préfère accuser son éditeur), on passe un path standard (un copier collé depuis pascal n'a pas obligation de passer dans un autre langage)
Ensuite, on peut discuter et a vu que le dev est un minimum capable
Merci bien: voila enfin une réponse constructive et bienveillante.
De fait j'utilise Micropython (je fais de la robotique sur Lego Mindstrorm).
Etant novice en Python, j'ignorais qu'il y avait des difficultés avec un IDE plutôt qu'un autre. On m'a reproché mon expérience en Pascal, mais là je n'ai JAMAIS eu de problème en passant de Delphi puis Embarcadero vers Lazarus, d'où je l'admets une partie de ma méfiance voire de ma colère vis-à-vis de Python.
Quoi qu'il en soit pourquoi dites-vous "Thonny comme par hasard"? Y a-t'il un problème avec cet éditeur?![]()
Vu qu'il a eu un ENOENT je penche pour open().
Accessoirement (j'ai pas tilté sur le coup), je n'ai jamais vu de ENOENT. Quand je tente d'ouvrir un fichier inexistant, j'obtiens un FileNotFoundError. ENOENT on l'obtient via errno. Enfin je préfère penser que ça vient de VisualCode...
Hé, le dev millésimé, c'est qui qui n'a pas donné toutes les infos dès le départ!!!???!!! Franchement j'ai l'impression de me retrouver face à Perceval de Kaamelott
Accessoirement papajoker te donne des pistes à tenter, des instructions à exécuter. Mais tu illustres littéralement la locution "il n’est pire sourd que celui qui ne veut pas entendre".
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Tu dois alors avoir moins d'expérience que moi en pascalSi il y a de nombreuses différences mais en effet pour un code très light cela peut passer.
Par exemple, bonjour le portage des fonctions anonymes
Personne ne te reproche ton expérience ! je te dis que ton expérience paraît complètement oubliée. Tu nous aurais dit simplement que tu étais débutant python, cela serait passé beaucoup mieux. Pour moi, avoir 40 ans de codage et ne pas être capable de nous donner véritablement l'erreur est complètement incompréhensible et ce qui me fâche.
Tu n'as pas compris, on parle d'ici d'un interpréteur différent !
Et donc , je suis lourd ! Je vais encore te dire d'utiliser justement un path valide puisque l'on ne sais pas comment réagit tel ou tel interpréteur à un path invalide (moi même, je ne sais pas)
Ce serait fait si je pouvais recopier le code et reproduire l'erreur.
Or déjà, je suis obligé de nettoyer le code que vous avez posté... et je me retrouve avec la seule définition de la fonction getorder:
Et l'exécution de ce script n'a aucune raison de planter puisqu'il ne fait pas grand chose a part définir une fonction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 import os import traceback FichierOrders = 'c:/temp/Orders.rob' def getorder(): try: f=open(FichierOrders, 'r') data=f.read() except Exception: data='erreur.' traceback.print_exc() return(data)
Je peux encore modifier le code en ajoutant l'appel de la fonction. Normal que çà plante avec le nom de fichier original: il n'existe pas chez moi (et ça ne sort pas d'erreur avec un fichier existant).
Avec çà, toujours pas de problème côté Python mais peut être que vous êtes un peu débordé par autant de nouveautés (en 40 ans, j'ai pratiqué des tas de langages: çà aide à garder l'esprit alerte et un peu d'humilité).
- W
A ton avis, si cela marche avec Thonny et pas avec VC?
Comme dans mon pays et plus encore dans ma province on adore l'autodérision, cela ne me fait bien rire..Envoyé par Sve@r
Par ailleurs tu dois admettre que tu as du mal avec les aînés.
Il suffit que je parle de mon expérience - et mon inexpérience en Python!!! - pour que TU commences à m'agresser. Il suffit de reprendre la séquence des messages pour le constater. Désolant.
On dirait bien que tu n'as suivi de nos échanges que ceux qui aiguisent ton agressivité. Et pour le coup je pense connaître ce domaine-là mieux que toi, à moins que toi aussi tu sois médecin et programmeur amateur novice en Python?
Naan, j'y crois pas trop là..
Mais j'ai lu Papajoker et constaté qu'il n'est pas trop compréhensif envers les novices non plus. Cela ne m'a pas empêché de le lire avec attention et réfléchir à ses idées.
Bordel! Va donc jeter un oeil sur les échanges que j'ai eu il y a peu sur le forum Lazarus et tu verras avec quelle sympathie amicale j'ai été reçu. Et tant qu'à faire prends en de la graine.
Bon j'arrête de te lire, car je devine que tu ne vas jamais admettre que tu puisses avoir toi aussi des lacunes. Ne serait-ce que de ne pas avoir pensé à l'éditeur. Moi je ne pouvais pas savoir que VC ne se comporte pas comme Thonny, au contraire je sais que le premier est fort apprécié par les informaticiens professionnels, dont mon fils cadet qui prépare tout de même une thèse de doctorat. Là tu peux dire que je me vante si tu en as envie: je suis en effet très fier de lui. Parce qu'il n'est pas agressif et sait expliquer les choses sans a priori.
Vale!
Nous aussi, j'ai de grosses lacunes en boule de cristal ! cela se soigne ?
Vraiment tu ne comprends rien :
Tu reconte une belle histoire au début, mais tu te comporte comme un gamin qui découvre un clavier.
Ce qui m'énerve c'est que justement avec tout ton bagage, tu ne fais que lire mais AUCUNE RÉACTIONni test, ni réponses
- Je t'ai proposé du code tout au début au message #4 avec pathlib ... Aucune réaction, faire un essai ne t'est même pas passé par la tête
- nous te disons que ton code pascal c:/temp/Orders.rob est invalide (en particulier pour ton interpréteur? que je ne connais pas), mais as-tu essayé de le modifier ? tu préfères parler de pascal et de tes états d'âme. Pour moi, c'est le minimum à faire puisque tu n'es même pas capable de nous donner où est déclenchée ton erreur (open ou read ?) mais c'est vrai que tu aimes que nous devinions pour toi... Pour moi, si tu n'es même pas capable de tester ceci c'est que tu es un cas désespéré !
Ben justement, je t'ai dit que VC avait déjà eu des soucis, tu n'as même pas réagi. Mais binarygirl te dit "oh ça marche avec Thonny et pas avec VC" et immédiatement "enfin une remarque constructive".
Tu fais une fixette sur ton âge???
Rectification: il suffit que je te fasse une remarque sur ta façon de poster un code ; et que je pose une question sur tes habitudes en matière de fichier, pour que TU commences avec tes "et de toute façon ça ne sert à rien" et sortir des "si ça convient à Votre Segneurie" et autres ironies!!!
Pourquoi "aussi" médecin? Parce que tu es médecin??? Bien entendu ça aussi c'est une info qu'il fallait que nous devinassionsMille pardons votre altesse docteur, mille pardons de ne pas déceler qu'un "gusse" qui arrive avec ses 40 ans de Pascal et sa réalisation d'un logiciel - toujours professionnel - en déployant une BD complète est en réalité un médecin !!! C'est vrai, c'est tellement courant
Et réfléchir à la mienne tu y as pensé? Oui je n'en ai mis qu'une seule car vu ta façon de remercier exprès les autres idées et pas les miennes je ne vais pas non plus me fouler pour un ingrat infatué. On constatera aussi que tu ne réponds pas non plus à wiztricks. Aurais-tu du mal avec tes ainés ou plus généralement du mal avec ceux qui te font des remarques... docteur?
1) j'y suis allé 2) j'y ai même écrit un truc notemment sur ta façon de poster tes codes chez-eux vis à vis de chez-nous et Bordel! va donc jeter un oeil sur mes milliers de posts et échanges que j'ai avec les vrais débutants, ceux qui acceptent les remarques et conseils. Bordel! va donc jeter un oeil sur mes propres questions de débutant ici https://www.developpez.net/forums/d2...gerer-l-erreur ou ici https://www.developpez.net/forums/d2...u/test-inutile et ma façon de les poser et toi prends en de la graine!!! Je t'ai dit comment poster un code, donné un lien d'exemple mais tu n'as même pas daigné aller le voir et ton code suivant était tout aussi illisible. papajoker te fait aussi une remarque sur ta façon de poster les codes dans les autres forums mais bien entendu tu te gardes bien d'y répondre. Tu n'as même pas dit "Bonjour" en arrivant ici, comme le gros malappris que tu es. Et n'essayons même pas d'envisager un "s'il vous plait" ou "merci" qui sont hors de ta portée de minable. Et ça ose donner des leçons de politesse et de morale ça???!!!???
Tiens un nouvel exemple: là un type sympa, qui arrive poliment, qui dit "bonjour", se disant simplement débutant, poste son code proprement, code qu'on peut copier/coller directement chez-nous pour le tester sans avoir besoin, comme l'a dit wiztricks, de devoir le nettoyer au préalable. Quelle différence, quelle agréable fraicheur comparé à ta prose de pédant!!!
Bien sûr, en plus du reste c'est à nous de penser à tout ce que tu ne dis pas. T'as raison, on est des gros nuls. Je me demande pourquoi tu viens encore ici...![]()
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Et ce qui est amusant avec ce problème, c'est que l'autre sujet, je t'ai conseillé d'utiliser input puisque tu ne désirais pas utiliser de fichier.
En python, nous avons sys.stdin qui est d'un compliqué incommensurable à utiliser
En pascal, je ne te ferai pas l'affront de te parler de TProcess que tu utilises depuis des décennies.
Je vois du pybricks, donc ça doit être un code qui tourne sur des élements de la célèbre brique, donc il n'y a sans doute pas d'arborescence de type c:/temp/...
un print(os.getcwd()) pour voir ce que ça affiche pour le répertoire de travail
ça se confirme que l'EV3 tourne sur du Linux, donc pas de chemin dans le style windows
https://pybricks.com/install/mindsto...d-micropython/
Ok merci. En réalité le slash ou anti-slash n'est pas la cause de mon soucis..
Je devrais préciser que mon but n'est PAS de coder directement pour l'EV3, mais d'utiliser le Python sur PC, lequel interagira directement avec la brique Lego. Je ne vois pas comment interfacer cette brique autrement.
Donc si je résume:
Brique Lego <--> Python sur PC <--> 2 fichiers d'échange (commande & réponse) <--> Lazarus.
Mon but est d'avoir grâce à Lazarus un interface graphique de commande du robot Lego qui soit agréable.
Maintenant comme je suis novice en Python, tu vas peut-être me dire qu'on peut trouver un RAD pour ce langage qui soit aussi facile et convivial que Lazarus pour le Pascal.
Si cela existe je suis preneur..
Pour le moment TVB en Python, c'est le module Lazarus qui rouspète..
Mais je vais pas vous embêter pour çà hein?
Encore merci pour ta réponse..
Donc en fait tu vas utiliser python et non micro-python ? donc pas de problème avec les fichiers
perdumais python permet comme laz de faire des interfaces gtk ou Qt, simplement il n'existe pas de rad, il faut juste savoir coder et alors le travail va aussi vite. (Mais, pour un débutant python, c'est une énorme galère...)
Existe quand même des outils graphiques pour créer des interfaces par glisser comme delphi, simplement ils sont fournis par gtk ou Qt et indépendants du langage.
2 fichiers ? heureusement que je t'avais dit qu'il était simple de ne pas en utiliserun programmeur avec 40 ans de métier ne connait pas stdin et stdout ? j'ai du mal à le croire.
Comme dit plus haut, avec laz, tu as TProcess qui a comme attributs "Input" et "Output", donc tu peux depuis ton Gui envoyer des commandes à python et recevoir facilement le résultat.
Si tu envoies un fichier via stdin à python :
Pour le retour, on utilise les print() de python, à pascal de lire les retours dans TProcess.Output (pas le bon forum)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if not sys.stdin.isatty(): contenu_fichier = sys.stdin.read()
Mais, ici le script python est lancé à chaque commande du gui...
Et si tu désires commander un robot avec des simples commandes (utilisation proche d'appel de fonction), on utilise alors la fonction input()
Ici, le script python est lancé qu'une seule fois par pascal, mais cela demande plus de code pascal...
Exemple
A pascal de lire Output après chaque commande (Input.Write("droite"+Chr(10), 7))
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 moteur = Moteur() moteur.démarrer() while True: entree = input() if entree == "quit": print("Ok - Au Revoir") moteur.stop() exit(0) if entree == "droite": moteur.stop() moteur.tourner(1) print('OK - ', moteur.etat())
Tu peux me donner des pistes à ce sujet? J'ai entendu parler de QT & gtk mais je n'y connais rien comme je l'ai déjà dit.
Rigole si tu veux, mais comme je l'ai écrit plus haut je ne suis PAS professionnel, et de fait je n'ai jamais eu besoin d'utiliser TProcess.
J'ajoute que de deux solutions la plus simple est pour moi la meilleure, et utiliser des fichiers ne pose normalement aucun problème (et avoue que le temps pris par le PC pour gérer deux fichiers texte d'une ligne est négligeable).
Je considère donc que cette méthode, si elle n'est pas élégante, est bonne.. si elle marche!
Mais je vais jeter un oeil sur TProcess tiens..
Oui mais pas d'importance je trouve.. (Je parle de lancer Python et pas de la méthode que tu proposes..)
Ok çà je peux faire, sauf que je ne comprends pas bien comment utiliser input() mais çà je vais pouvoir chercher un peu..
Alors merci pour ces idées intéressantes!![]()
? Lazarus permet avec une simple option à la compilation de générer un programme en Qt ou Gtk sans le moindre changement dans le code donc c'est ce que tu utilises déjà
des pistes, je ne suis pas un moteur de recherche... mais comme dit plus haut, si on débute en python, ajouter un framework est une énorme tâche.
Note: par contre, en python, le code gtk et qt est complètement différent !
? difficile ... python c:\truc\monscript.py juste à voir si il est bien configuré dans ton path, sinon tu donnes le chemin de python (c:\ou_est_installé\python c:\truc\monscript.py)
En pascal, très compliqué aussi (voir autre forums)
Difficile de faire plus simple, cette fonction lit une ligne dans stdin. A toi de savoir ce que tu as passé dans stdin via pascal (une simple commande "droite\n" comme mon exemple) ou le contenu d'un fichier json (sans retour à la ligne), cela ne change rien pour python
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Proc.Executable := 'c:\ou_est_installé\python.exe'; Proc.Parameters.Add('c:\truc\monscript.py'); proc.Options := [poUsePipes, poStderrToOutPut]; Proc.Input.Write(mesDatas, len(mesDatas)) ... retour_python_via_print := Proc.Output.Read(...)
le retour de input() python correspond à une ligne envoyée via pascal
Encore jamais essayé (mais y a tant et tant de chose qu'on ignore et celles aussi qu'on ignore ignorer.. )
J'essaierai aussi un jour, mais comme je te le disais, j'aurais aimé avoir un RAD en Python, mais bon j'ai sans doute été trop gâté par Borland, puis Delphi, puis Lazarus dont le rad, faut bien le dire, est très facile et agréable à utiliser..
Je rappelle aussi que je n'ai JAMAIS considéré les intervenants comme des larbins, et que je me sers avant tout de l'aide que je peux trouver seul.
Je ne fais appel à l'aide que quand je ne trouve pas. Et entre nous, le forum c'est aussi un peu pour cela non?
Et pour partager: si je trouve le moyen d'interfacer l'EV3 comme je veux le faire, c'est avec plaisir que je partagerai.
Mais trouver des gens assez bizarres pour vouloir faire du Lego en Pascal cela risque d'être difficile..
Ben tu vois, que ce n'est pas si facile et qu'un novice peut ne pas y arriver sans ce petit coup de pouce que tu veux bien me donner!
Ceci étant, que se passe-t'il si un processus envoie une info pendant que le suivant tente de lire? Y a pas conflit?
Allez, bonne fin de soirée!![]()
Tu parles ici de pascal donc pas notre problème
Dans le second cas, je ne parle que de lancer un seul TProcess ! ensuite, on utilise que input et output. Et oui, surtout en graphique il faut éviter les blocages (attente de output), mais ici c'est une question purement pascal. En python on sait faire, si pascal non, alors c'est lui le jouet.
Partager