Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer fichier .txt dans le même répertoire que .py

    17 décembre 2015 à 11:21:08

    Voilà, c'est clair. J'ai un soucis depuis peu, mais je ne sais pas d'où il vient.

    Je fais dans un fichier test.py :

    fichier = open("file.txt", "w")
    fichier.write("test")
    fichier.close()

    Mon fichier "file.txt" est alors créé sous "c:/users/mon_nom" alors que mon fichier "test.py" était placé sous "d:/code/blabla". Je voudrais que "file.txt" se créé également sous "d:/code/blabla" et jusqu'alors je n'avais jamais eu ce soucis. Le fichier texte se créait dans le même répertoire que le fichier python.

    Quelle manip ai-je fait pour en arriver ici ? Comment la résoudre ?

    Merci d'avance

    -
    Edité par i-love-raffa 17 décembre 2015 à 11:21:46

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      17 décembre 2015 à 12:09:48

      import os
      
      path = os.path.dirname(os.path.realpath(__file__))
      
      filePath = os.path.join(path, 'file.txt')
      with open(filePath, 'w') as f:
          f.write('test')
      • Partager sur Facebook
      • Partager sur Twitter
        17 décembre 2015 à 14:50:08

        Bonjour,

        As-tu essayé de faire 

        with open('./nom_de_ton_ficher','w') as f :
             f.write("bonjour")

        -
        Edité par Jo541 17 décembre 2015 à 17:11:04

        • Partager sur Facebook
        • Partager sur Twitter
          17 décembre 2015 à 15:36:54

          Jo541 a écrit:

          Bonjour,

          As-tu essayé de faire 

          with open('./nom_de_ton_ficher','w') as f :
               f.write("bonjour")

          Oui, ça me donne la même chose...
          • Partager sur Facebook
          • Partager sur Twitter
            17 décembre 2015 à 16:54:42

            Oldprogrammer a la bonne solution mais il faut faire 

            path = os.path.dirname(os.path.realpath('__file__'))

            PS : Après avoir continué à regader , il y aussi 

            import os 
            
            os.getcwd()

            qui te retourne ton dossier courant 

            -
            Edité par Jo541 17 décembre 2015 à 17:11:11

            • Partager sur Facebook
            • Partager sur Twitter
              17 décembre 2015 à 17:37:00

              Dans les deux cas proposés, le fichier est toujours enregistré sous "C:/Users/Mon_Nom" (et pas là où est stocké le fichier python). :(

              -
              Edité par i-love-raffa 17 décembre 2015 à 17:37:06

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                17 décembre 2015 à 18:09:35

                Le fichier créé sera là où se trouve le fichier exécuté, il n'y a pas à chercher plus loin concernant mon code, ça fonctionne ! Si maintenant ce n'est pas ce que tu veux, c'est que tu as omis des informations, où que tu n'exécutes pas ton fichier python à l'endroit que tu l'as défini dans ton problème de départ.

                Pour vérifier fait un

                import os
                 
                path = os.path.dirname(os.path.realpath('__file__'))
                
                print(path)

                Jo541 a écrit:

                Oldprogrammer a la bonne solution mais il faut faire 

                path = os.path.dirname(os.path.realpath('__file__'))

                Non ça fonctionne sans les quotes ! Peut-être est-il en version 2.x, mais encore une fois, rien n'est spécifié dans les détails pour aider...

                -
                Edité par Anonyme 17 décembre 2015 à 18:10:26

                • Partager sur Facebook
                • Partager sur Twitter
                  17 décembre 2015 à 18:23:32

                  oldProgrammer a écrit:

                  Non ça fonctionne sans les quotes ! Peut-être est-il en version 2.x, mais encore une fois, rien n'est spécifié dans les détails pour aider...

                  Et pourtant même en Python 2 __file__ existe. Il faudrait un peu plus d'informations pour répondre, car en l'état, le code fourni par oldProgrammer fonctionne très bien.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    17 décembre 2015 à 18:31:51

                    __file__ est une constante de module. Elle est définie automatiquement par l'interpréteur quand le module est importé pour la première fois dans un programme. Forcément, il n'y a pas de constante __file__ dans l'invite de commandes de l'interpréteur Python (du moins pas dans l'espace de noms global).

                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 décembre 2015 à 18:38:57

                      oldProgrammer a écrit:

                      Le fichier créé sera là où se trouve le fichier exécuté, il n'y a pas à chercher plus loin concernant mon code, ça fonctionne ! Si maintenant ce n'est pas ce que tu veux, c'est que tu as omis des informations, où que tu n'exécutes pas ton fichier python à l'endroit que tu l'as défini dans ton problème de départ.

                      Pour vérifier fait un

                      import os
                       
                      path = os.path.dirname(os.path.realpath('__file__'))
                      
                      print(path)

                      Je suis vraiment désolé et je me répète, mais les deux commandes (print(path) et os.getcwd()) me renvoient : C:\Users\Mon_Nom

                      Jo541 a écrit:

                      Oldprogrammer a la bonne solution mais il faut faire 

                      path = os.path.dirname(os.path.realpath('__file__'))

                      Non ça fonctionne sans les quotes ! Peut-être est-il en version 2.x, mais encore une fois, rien n'est spécifié dans les détails pour aider...

                      -
                      Edité par oldProgrammer il y a 23 minutes

                      Je suis en Python version: 3.4.1. En tout cas, moi, ça ne fonctionne pas sans les quotes.



                      -
                      Edité par i-love-raffa 17 décembre 2015 à 18:40:17

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        17 décembre 2015 à 18:45:39

                        Je suis vraiment désolé et je me répète, mais les deux commandes (print(path) et os.getcwd()) me renvoient : C:\Users\Mon_Nom

                        Donc ton fichier python se trouve dans ce répertoire !

                        Et pourtant même en Python 2 __file__ existe.

                        Merci de confirmer, n'ayant pas testé sur python 2.x, j'ai laissé le bénéfice du doute à l'auteur

                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 décembre 2015 à 19:34:29

                          oldProgrammer a écrit:

                          Donc ton fichier python se trouve dans ce répertoire !

                          Non, je crois qu'il parle du cas où il utilise '__file__', qui est donc considéré comme un fichier __file__ dans le répertoire courant.

                          Pour revenir au problème, ça me semble louche, je ne vois qu'un cas où __file__ n'existe pas, c'est dans la console interactive.

                          -
                          Edité par entwanne 17 décembre 2015 à 19:35:32

                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 décembre 2015 à 19:58:15

                            bonjour, je suis en python 2.5 et

                            fichier = open("file.txt", "w")
                            fichier.write("test")
                            fichier.close()

                            fonctionne parfaitement. le fichier se met à l'endroit où se trouve le script ;)

                            et si tu veux bouger ton fichier de place, tu fais: "import os" ensuite, tu crées un nouveau dossier au "path" que tu veux et tu déplace ton fichier (il me semble que c'est ça ;) )

                            http://apprendre-python.com/page-gestion-fichiers-dossiers-python -->petit lien sympa, bien fait dont je me sert couramment ;) il est compatible 2.x et 3.x il me semble. De plus, il n'y a pas que de la doc pour python mais pour du rasbery pi et Django ;)

                            -
                            Edité par Varan1 17 décembre 2015 à 20:11:17

                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 décembre 2015 à 20:14:12

                              Varan1 a écrit:

                              fonctionne parfaitement. le fichier se met à l'endroit où se trouve le script ;)

                              Parce que le script se trouve dans le répertoire courant, ce qui ne semble pas être le cas de l'auteur du sujet.

                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 décembre 2015 à 21:20:59

                                oui, donc il faut faire quelque chose dans ce genre?


                                Varan1 a écrit:

                                et si tu veux bouger ton fichier de place, tu fais: "import os" ensuite, tu crées un nouveau dossier au "path" que tu veux et tu déplace ton fichier (il me semble que c'est ça ;) )

                                voici la réponse exacte: http://www.developpez.net/forums/d215603/autres-langages/python-zope/general-python/changer-repertoire-courant-d-fichier/

                                -
                                Edité par Varan1 17 décembre 2015 à 21:23:48

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 décembre 2015 à 21:28:05

                                  J'ai créé le fichier avec Pyzo, mais que je l'exécute avec Pyzo ou bien via l'IDLe de Python, cela revient au même ! C'est prise de tête, j'ai l'impression d'être un cas isolé puisque cela fonctionne normalement chez vous !
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 décembre 2015 à 21:45:31

                                    As-tu essayé d'indiquer tout ton chemain en entier?Sinon, c'est bizarre... et je te dirai bien de réinstaller ton python et peut-être de le mettre dans ton C... mais peut-être cela ne servirait à rien...
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 décembre 2015 à 21:55:39

                                      une question comme ça, est-ce que ton répertoire principale est le C? Est-ce que cela peut seulement impacter? (là, ça sort du peu de connaissances que j'ai... :D)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 décembre 2015 à 8:47:29

                                        oldProgrammer a écrit:

                                        Je suis vraiment désolé et je me répète, mais les deux commandes (print(path) et os.getcwd()) me renvoient : C:\Users\Mon_Nom

                                        Donc ton fichier python se trouve dans ce répertoire !

                                        Et pourtant même en Python 2 __file__ existe.

                                        Merci de confirmer, n'ayant pas testé sur python 2.x, j'ai laissé le bénéfice du doute à l'auteur

                                        Je ne remet pas du tout ton code en question, sauf que comme l'a dis Celthon, si tu execute ce code dans interpreter python. __file__ n'existe pas . Or si tu executes un fichier python __file__ existe bien . Peut importe ta version de python . Donc pas besoins de "monter sur tes grands chevaux" :) 

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 décembre 2015 à 9:53:33

                                          Mais d'après l'OP, le code est exécuté depuis un fichier test.py, cette variable devrait donc exister.

                                          Varan1> Il n'est pas utile de changer le répertoire courant, et ça ne changerait rien au problème : il faudrait connaître le répertoire cible. Et non, le point de montage n'a rien à voir là dedans.

                                          i-love-raffa> Et comment l'exécutes-tu précisément ? Pourrais-tu aussi donner des informations plus précises sur les erreurs levées ?

                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            18 décembre 2015 à 9:58:39

                                            Je ne remet pas du tout ton code en question, sauf que comme l'a dis Celthon, si tu execute ce code dans interpreter python. __file__ n'existe pas . Or si tu executes un fichier python __file__ existe bien . Peut importe ta version de python . Donc pas besoins de "monter sur tes grands chevaux" :)

                                            Ce message ne t'étais pas destiné... mais à l'auteur !

                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              18 décembre 2015 à 11:01:52

                                              Ah d'accord . J'ai mal compris . Mes excuses :)
                                              • Partager sur Facebook
                                              • Partager sur Twitter

                                              Créer fichier .txt dans le même répertoire que .py

                                              × 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