Partage
  • Partager sur Facebook
  • Partager sur Twitter

importer fichier

Sujet résolu
Anonyme
    27 septembre 2016 à 22:38:03

    bonsoir

    est ce qu'il est possible en python d'importer un fichier de code et l'utiliser dans un autre fichier d'un autre code.

    • Partager sur Facebook
    • Partager sur Twitter
      27 septembre 2016 à 23:06:35

      bonsoir,

      bien sûr, il suffit que ton code soit dans un fichier avec l'extension .py

      imaginons que tu dans le fichier myfunctions.py tu ais une fonction f1.

      tu peux faire depuis un autre fichier situé dans le même dossier:

      from myfunctions import f1

      EDIT: ah oui, faut faire attention à ton IDE aussi, ca varie légèrement selon celui que tu utilises. Mais globalement c'est comme ça que ca fonctionne ^^

      -
      Edité par WexyR 27 septembre 2016 à 23:08:46

      • Partager sur Facebook
      • Partager sur Twitter
      Si je suis tête en l'air, c'est par habitude de viser le sommet
      Anonyme
        28 septembre 2016 à 10:27:56

        @WexyR  merci :)

        je veut que toute le code soit appliqué non seullement une fonction dans la code

        • Partager sur Facebook
        • Partager sur Twitter
          28 septembre 2016 à 10:40:53

          En reprenant la nomenclature proposée par WexyR, tu importes ce fichier et utilises les fonctions/classes présents dedans de la même manière que lorsque tu utilises un module :

          import myfunctions
          myfunctions.f1(...)
          

          ou, si tu trouves que le nom est trop chiant à écrire à chaque fois (ce qui arrive très souvent) :

          import myfunctions as mf
          mf.f1(...)

          mf est une abréviation que tu choisis !

          -
          Edité par oowaka 28 septembre 2016 à 10:43:27

          • Partager sur Facebook
          • Partager sur Twitter
          Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
          Anonyme
            28 septembre 2016 à 13:30:41

            A=[]
            x=i=0
            B=[38,57,114]
            taille=420
            X=len(B)
            config=numpy.zeros((X),dtype='i')  
            while(i<X):
            while(x<X):
                    a=int(taille/B[x])
                    A.append(a)
                    while(config[i]<=(a-1)):
                        config[i]=config[i]+1
                        #print config
                    q=config[i]*B[x]
                    if q>=360:
                        print q
                        print "configuration maximale", config 
                        import EOCSA
                    i=i+1
                    x=x+1
                    print 
                    config=numpy.zeros((X),dtype='i')



            c'et mon code, il fonctionne mais la fonction import s'éxécute une seule fois, c ad a l'etape i+1,x+1 il donne seullement le rslt   print "configuration maximale", config mais il ne passe pas à la fonction import

            -
            Edité par Anonyme 28 septembre 2016 à 13:39:07

            • Partager sur Facebook
            • Partager sur Twitter
              28 septembre 2016 à 13:40:03

              OK, en fait ce que tu veux n'est pas " importer un fichier " mais " exécuter un fichier " externe !

              Pour cela, tu peux avoir plusieurs méthodes...

              La plus propre, à mon sens, est de transformer ton fichier EOCSA.py de telle sorte que son contenu soit sous forme de fonction. Ainsi, ce fichier deviendra un module que tu pourras importer et tu feras appel à la (les) fonction(s)/classe(s) qu'il contient !

              -
              Edité par oowaka 28 septembre 2016 à 13:40:27

              • Partager sur Facebook
              • Partager sur Twitter
              Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
              Anonyme
                28 septembre 2016 à 16:20:49

                j'ai pas trouver comment transformer un fichier en une fonction sachant que le code est assez long et comporte plusieurs fonction déja

                -
                Edité par Anonyme 28 septembre 2016 à 16:24:27

                • Partager sur Facebook
                • Partager sur Twitter
                  28 septembre 2016 à 16:32:48

                  Si tu as un fichier du genre :
                  def my_function_0(a):
                      return a
                  
                  print my_function_0(0.)
                  (il faut ici imaginer que tu as plein de fonctions différentes qui peuvent être appelées dans le corps du fichier)
                  il te faut modifier ce fichier en :
                  def my_function_0(a):
                      return a
                  
                  def body_file():
                      print my_function_0(0.)
                  En gros, tu mets tout le corps du fichier (en dehors des fonctions que tu as déjà déclaré) dans une fonction.
                  Ensuite, dans ton autre fichier, tu importes ce fichier comme un module python, et tu as alors juste à appeler la fonction body_file de ce module !
                  L'avantage, de plus, c'est que tu pourras donner des arguments à cette fonction body_file pour rendre le code plus paramétrable (à faire dans un second temps si c'est faisable) ! ;)
                  Ce n'est peut être pas le plus propre, mais ça aura au moins le mérite de fonctionner... Lorsque tu sais que tu vas réutiliser un code, essaye le moins possible de le faire sous forme de scripts... le mieux étant d'orienter objet ton code !

                  -
                  Edité par oowaka 28 septembre 2016 à 16:34:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                  Anonyme
                    28 septembre 2016 à 17:08:40

                    def mycode():
                        print EOCSA(0.)
                    import  mycode

                    ImportError: No module named mycode

                    maintenant je doit faire $ sudo pip install mycode ??

                    -
                    Edité par Anonyme 28 septembre 2016 à 17:31:54

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 septembre 2016 à 17:41:01

                      Pourquoi cherches-tu aussi compliqué ???

                      Si ton fichier s'appelle EOCSA et que tu as une fonction mycode qui est dedans, tu dois faire cela (dans un autre fichier qui est dans le même répertoire) :

                      import EOCSA
                      
                      EOCSA.mycode(...)

                      Le fait que ça te dise ImportError: No module named mycode signifie que python n'arrive pas à trouver un fichier qui s'appelle mycode dans son PATH ou dans le répertoire courant/du fichier appelé !

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                      Anonyme
                        28 septembre 2016 à 18:05:24

                        je suis vraiment trés désolé :(

                        mais le probléme est comment exécuter le fichier à chaque itération c'est que je ne sais pas comment le faire

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 septembre 2016 à 18:32:05

                          Bon, je te fais un exemple...

                          Tu as un premier fichier python say_hello.py

                          # say_hello.py
                          
                          def hello(name):
                              print "hello", name

                          et un deuxième fichier python answer.py qui est dans le même répertoire :

                          # answer.py
                          
                          import say_hello as sh
                          
                          def answer(words):
                              print words
                          
                          sh.hello("Toto")
                          
                          answer("hey, how are you ?")

                          Tu peux essayer ceci chez toi si tu en as envie !

                          Comme tu le vois, dans le deuxième fichier, tu fais appel à une fonction qui est dans le premier !

                          Et bien, ce que tu dois faire est exactement pareil, mais avec tes propres fichiers et leurs propres fonctions !

                          -
                          Edité par oowaka 28 septembre 2016 à 18:32:28

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                          Anonyme
                            28 septembre 2016 à 20:15:37

                            c'est toujours le meme probleme l'exécution du fichier EOCSA se fait une seule foie
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 septembre 2016 à 21:33:47

                              Ben tu le mets dans tes itérations ! En fait, je vois pas où est ton problème ! J'en reviens aux questions que je t'ai posé dans ton autre sujet ! Est ce que tu comprends ce que tu fais ???

                              • Partager sur Facebook
                              • Partager sur Twitter
                              Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                              Anonyme
                                28 septembre 2016 à 21:52:16

                                je veut que le programme a chaque itération exécute le fichier (import EOCSA) mais mon probléme que le code s'éxécute juste une seule foie
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 septembre 2016 à 22:08:38

                                  et pourquoi ne pas le mettre dans une fonction pour l'appeler autant de fois que tu le souhaites après? Oo'
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Si je suis tête en l'air, c'est par habitude de viser le sommet
                                    28 septembre 2016 à 22:23:23

                                    Je vois pas pourquoi tu n'arrives pas à l'exécuter à chaque itérations si tu as bien fait ce que je t'ai dit !!!

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                                    Anonyme
                                      28 septembre 2016 à 22:23:51

                                      oui j'ai essayer mais je trouve pas la meilleure solution,
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        28 septembre 2016 à 22:28:25

                                        Comme l'a précédemment dit oowaka, exécuter un fichier est différent de l'importer. Toi ce que tu veux c'est exécuter le fichier et non l'importer. De plus mettre import EOCSA dans une boucle n'a pas de sens car l'importation est une procédure optimisée qui ne charge qu'une seule fois le fichier. Bref, il faut le faire différemment.

                                        Une solution rapide, c'est de mettre tout le code de EOCSA dans une fonction (par exemple func_eocsa):

                                        #Ancienne version du fichier EOCSA.py
                                        ...
                                        ...
                                        ...  #code
                                        ...
                                        ...
                                        
                                        
                                        #Nouvelle version du fichier EOCSA.py
                                        def func_eocsa():
                                            ...
                                            ...
                                            ...  #code
                                            ...
                                            ...


                                        Ensuite tout en haut de ton second fichier, tu importes EOCSA. Ainsi tu pourra avoir accès à la fonction, et c'est elle que tu appelleras à chaque itération. Un truc du style:

                                        #Tout en haut de ton second fichier
                                        import EOCSA
                                        
                                        ...
                                        ...
                                        ...  #le code du second fichier
                                        ...
                                        ...
                                        
                                        #Et au niveau de ta boucle
                                        EOCSA.func_oecsa()  #appel de la fonction func_oecsa du module EOCSA

                                        -
                                        Edité par Olygrim 28 septembre 2016 à 22:32:05

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Précepte: Le mieux est l'ennemi du bien
                                        Anonyme
                                          28 septembre 2016 à 22:50:09

                                          c'est qu'est ce que je le faire étape par étape, alors au début quand je fait import EOCSA il exécute le programme EOCSA (ce que je le veut pas ici je veut l'exécution à l'interieur du boucle) puis il entre dans le code il retourne un erreur  :EOCSA.function_eocsa()
                                          AttributeError: 'module' object has no attribute 'function_eocsa'
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            28 septembre 2016 à 22:57:05

                                            Si tu as mis tout le code de ton fichier dans une fonction, il n'y a aucune raison que le code s'exécute lors de l'import??? Le seul moyen d'exécuter une fonction, c'est de l'appeler (c'est-à-dire lui mettre les parenthèses):

                                            func_eocsa()
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                            Précepte: Le mieux est l'ennemi du bien
                                            Anonyme
                                              28 septembre 2016 à 23:01:36

                                              import EOCSA
                                              width= input('donner la largeur du trame: ')
                                              Height = input('donner la hauteur du trame: ')
                                              taille=420
                                              B=[38,57,114]
                                              X=len(B)
                                              c=numpy.zeros((X),dtype='i') 
                                              i=x=0
                                              A=[]
                                              while(i<X):
                                                  while(x<X):
                                                      a=int(taille/B[x])
                                                      A.append(a)
                                                      while(c[i]<=(a-1)):
                                                          c[i]=c[i]+1
                                                          
                                                      q=c[i]*B[x]
                                                      if q>=360:
                                                 
                                                          print q
                                                          EOCSA.function_eocsa()
                                                      i=i+1
                                                      x=x+1
                                                      print 
                                                      config=numpy.zeros((X),dtype='i') 
                                              c'est mon code, c bon l'exécution se repete dans le boucle il reste que le probleme de  import au debut du code

                                              -
                                              Edité par Anonyme 28 septembre 2016 à 23:25:47

                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 septembre 2016 à 23:43:38

                                                C'est quoi le problème de l'import ?

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                                                Anonyme
                                                  28 septembre 2016 à 23:46:26

                                                  quand je fait import EOCSA il fait l'exécution du fichier EOCSA puis il entre dans l'exécution de la boucle
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 septembre 2016 à 23:56:55

                                                    Il y a quoi dans EOSCA ?

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                    Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                                                    Anonyme
                                                      29 septembre 2016 à 0:05:38

                                                      je met tout le code dans une fonction function_eocsa dans le fichier EOCSA
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        29 septembre 2016 à 8:30:40

                                                        Le plus rapide serait de montrer le fichier en question car, encore une fois, il n'y a aucune raison que l'import exécute le code si celui-ci se trouve dans une fonction. Si ça arrive, c'est qu'à un endroit dans le fichier EOCSA.py tu as mis un func_eocsa() quelque part, ou que tu as oublié de mettre une partie de ton code dans la fonction.
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                        Précepte: Le mieux est l'ennemi du bien
                                                        Anonyme
                                                          29 septembre 2016 à 10:56:29

                                                          bonjour

                                                          ok c bon il marche

                                                          le probléme qu'aprés mettre le code dans une fonction, j'ai ecrit à la fin un appel dans le meme fichier,j'ai seullement supprimé cet appel est il marche cv

                                                          vraiment un grand merci à vous

                                                          -
                                                          Edité par Anonyme 29 septembre 2016 à 11:01:31

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter

                                                          importer fichier

                                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                          • Editeur
                                                          • Markdown