Executer un fichier python dans un autre fichier python

Résolu
Quent -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Dans le cadre d'un projet je dois faire un programme en python qui génère un autre programme python. Cela fonctionne très bien mais je voudrais savoir si il est possible à la fin de mon programme, ajouter une ligne pour exécuter le programme qui vient d'être créer. J'ai vu à plusieurs endroit qu'on peut utiliser execfile("fichier.py") mais quand je met ça à la fin de mon code j’obtiens une erreur qui me dit que execfile n'est pas défini. Peut-être qu'il faut importer un module qui contient cette fonction ?
Merci à tous ceux qui pourrons m'aider.

1 réponse

  1. Utilisateur anonyme
     
    execfile() fonctionne en python2 mais a été supprimé dans la version 3.

    Soit tu execute ton code en python 2, soit il faut executer le contenu du fichier "à la main " :
    exec(open("./filename").read())
    14
    1. Quent
       
      Merci beaucoup ça fonctionne parfaitement ! :)
      Mais ce n'est pas gênant d'ouvrir le fichier et de ne pas le refermer après ?
      0
    2. Utilisateur anonyme
       
      Oui normalement il faut le refermer.
      1
    3. PythonBeginner
       
      Merci beaucoup pour la commande !

      Petite question : Comment executer un programme python dans une nouvelle fenêtre ?
      Car la commande que tu as donné ouvre le programme dans la même fenêtre...

      Merci
      0
    4. ano
       

      j'espère tu vas me répondre 6 ans après mdr. Du coup on fais comment pour fermer ?

      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > ano
         

        Bonjour,

        La manière propre de garantir qu'un fichier est bien fermé est d'utiliser with.

        Voici à quoi ça pourrait ressembler :

        filename = "prog.py"
        
        # Créer le fichier "prog.py" qui contient: print("Hello")
        with open(filename, "w") as f:
            print("print(\"Hello\")", file=f)
        
        # Exécuter le code contenu dans "prog.py"
        with open(filename, "r") as f:
            code = f.read()
            exec(code)

        Exécution :

        Hello

        Bonne chance

        0