Programme python qui ne fonctionne pas ?!

Résolu
CHTIDUC Messages postés 5 Date d'inscription mercredi 14 août 2024 Statut Membre Dernière intervention 18 août 2024 - Modifié le 15 août 2024 à 16:51
CHTIDUC Messages postés 5 Date d'inscription mercredi 14 août 2024 Statut Membre Dernière intervention 18 août 2024 - 18 août 2024 à 19:16

Bonjour,

j'ai obtenu un programme python grâce a chat gpt mais il ne fonctionne pas et je ne comprends pas pourquoi j'aurais besoin de votre aide !!!

voici le programme :

import psutil
import os

def is_BambuStudio_running():
    """Vérifie si BambuStudio est en cours d'exécution."""
    for process in psutil.process_iter(['pid', 'name']):
        if 'BambuStudio' in process.info['name']:
            return True
    return False

def get_data_from_file(filepath):
    """Lit les données nécessaires depuis un fichier."""
    try:
        with open(filepath, 'r') as file:
            data = file.read().strip()
            return float(data)
    except FileNotFoundError:
        print(f"Le fichier {filepath} n'a pas été trouvé.")
        return None
    except ValueError:
        print("Les données dans le fichier ne sont pas valides.")
        return None

def calculer_prix(quantite, prix_par_kilo):
    """Calcule le prix pour une quantité donnée."""
    prix_par_gramme = prix_par_kilo / 1000
    return quantite * prix_par_gramme

def main():
    """Fonction principale qui exécute le programme."""
    # Remplacez le chemin du fichier par celui où BambuStudio stocke les données
    filepath = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Bambu Studio\Bambu Studio.lnk'
    
    if is_BambuStudio_running():
        print("BambuStudio est en cours d'exécution.")
        
        # Obtenez la quantité depuis le fichier
        quantite = get_data_from_file(filepath)
        
        if quantite is not None:
            prix_par_kilo = 20.0  # Prix pour 1000 grammes (20 €)
            prix = calculer_prix(quantite, prix_par_kilo)
            print(f"Le coût pour {quantite} grammes est de {prix:.2f} €")
        else:
            print("Erreur lors de la lecture des données.")
    else:
        print("BambuStudio n'est pas en cours d'exécution.")

if __name__ == "__main__":
    main()


 

et voici la reponse que python me renvoie 

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "<stdin>", line 6, in main
  File "<stdin>", line 3, in is_BambuStudio_running
NameError: name 'psutil' is not defined

est ce que quelqu'un pourrait m'aider ???


Windows / Opera 109.0.0.0

A voir également:

5 réponses

Whismeril Messages postés 19144 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 16 septembre 2024 919
15 août 2024 à 08:26

Bonjour 

pour tes prochains messages merci de poster ton code comme décrit ici https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

En précisant bien Python dans la liste déroulante.

Le message dit que psutil n'est pas défini. Hors il y a un import tout en haut.

Soit

  • L'import est incorrect 
  • tu n'as pas installé psutil

dans les 2 cas, lire la documentation de cette librairie te serait bénéfique 


0

J'ai testé ton code et il me donne comme message que le module psutil n'est pas trouvé.

Après installation, le programme semble fonctionner.

Peux-tu nous donner la version de Python que tu as installée?

P.S. J'ai modifié la ligne 28 qui donne le path. Il était plus simple de précéder la chaîne avec un  r  plutôt que doubler les  \

0
CHTIDUC Messages postés 5 Date d'inscription mercredi 14 août 2024 Statut Membre Dernière intervention 18 août 2024
15 août 2024 à 17:16

python 3.12 (64-bit)

0

Je suis sur Windows 10 avec la même version de Python (3.12).

Surprenant qu'on n'aie pas le même message d'erreur.

Tu es certain que ta ligne  import psutil  était présente lors de ton essai?

edit: je viens de tester en mettant cette ligne en commentaire. J'ai le même message que toi.

0
mamiemando Messages postés 33266 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 16 septembre 2024 7 777
Modifié le 19 août 2024 à 16:13

Bonjour,

Avant d'entrer dans le code, quel programme as-tu demander à ChatGPT de générer ? En outre, je ne vois pas le rapport entre BambuStudio et ce que fait ton programme. Parce que là en gros, ton programme dit :
1) vérifier que BambuStudio (logiciel d'impression 3D) est lancé
2) si c'est le cas lire le fichier de donnée pour extraire un prix et déduire un prix au kilo

Ensuite, je déconseille très fortement d'utiliser ChatGPT pour coder à sa place. Outre le fait que tu n'apprendras rien, ChatGPT a de bonnes chances de générer un programme idiot (et ça n'a pas loupé :p).

Dans cet exemple, à aucun moment BambuStudio n'est utilisé (alors pourquoi regarder qu'il est lancé ?!). Du coup, à quoi bon contrôler s'il est lancé avec psutil ? Ainsi, ce que ChatGPT t'a généré se réécrit bien plus simplement :

import os

def get_data_from_file(filepath):
    """Lit les données nécessaires depuis un fichier."""
    try:
        with open(filepath, 'r') as file:
            data = file.read().strip()
            return float(data)
    except FileNotFoundError:
        print(f"Le fichier {filepath} n'a pas été trouvé.")
    except ValueError:
        print("Les données dans le fichier ne sont pas valides.")
    return None

def calculer_prix(quantite, prix_par_kilo):
    """Calcule le prix pour une quantité donnée."""
    prix_par_gramme = prix_par_kilo / 1000
    return quantite * prix_par_gramme

def main():
    """Fonction principale qui exécute le programme."""
    # Remplacez le chemin du fichier par celui où BambuStudio stocke les données
    filepath = 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Bambu Studio\Bambu Studio.lnk'
    
    # Obtenez la quantité depuis le fichier
    quantite = get_data_from_file(filepath)
        
    if quantite is not None:
        prix_par_kilo = 20.0  # Prix pour 1000 grammes (20 €)
        prix = calculer_prix(quantite, prix_par_kilo)
        print(f"Le coût pour {quantite} grammes est de {prix:.2f} €")
    else:
        print("Erreur lors de la lecture des données.")

if __name__ == "__main__":
    main()

Par ailleurs, je pense que ton message n'est pas cohérent et que quand tu as exécuté ton code, tu n'avais pas encore écrit import psutil (ou que tu ne l'as pas sauvé depuis). En effet :

  • soit psutil est utilisé dans le code, mais pas importé, dans ce cas il est normal d'avoir l'erreur psutil is not defined (que psutil soit installé ou non) ;
  • soit psutil est importé dans le code alors qu'il n'est pas installé, dans ce cas python renvoie une ImportError :
  • Soit psutil est importé et installé et le code que tu as proposé est "cohérent"

En admettant que tu veuilles vraiment utiliser psutil, assure-toi que ce module python est bien installé est bien installé (voir ici) en tapant dans une console (pas dans python) :

pip install psutil

Enfin, je suis assez sceptique sur le fichier d'entrée utilisé (voir variable filepath) qui semble être un raccourci windows vers le logiciel BambuStudio plutôt qu'un fichier de données à proprement parler...

Bonne chance

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CHTIDUC Messages postés 5 Date d'inscription mercredi 14 août 2024 Statut Membre Dernière intervention 18 août 2024
18 août 2024 à 19:16

merci pour ton aide et tes conseils je vais voir ce que je peux faire

0