Partage
  • Partager sur Facebook
  • Partager sur Twitter

Modifier des informations dans un fichier .doc

    23 septembre 2010 à 11:31:09

    Bonsoir!

    Donc voilà j'ai un fichier .doc qui peut être ouvert avec word etc, et il y a des champs ou j'ai mis <INFO QUE JE CHERCHE> et donc je me demandais si il était possible de faire un nouveau fichier avec ces champs remplacés ?

    Du genre une fonction

    def createLetter(file, fileto, entreprise, contact, address, postalcode):
    


    Mais je ne sais pas du tout comment utiliser les modes avec open() et vu qu'il y a des caractères ASCII quand je l'ouvre avec notepad++ si cela ne dérange pas.
    • Partager sur Facebook
    • Partager sur Twitter
      23 septembre 2010 à 12:07:45

      Je crois qu'il faut ce module pour interagir avec les .doc, mais je ne sais l'utiliser.
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 septembre 2010 à 17:51:03

        Je sais pas si ça fonctionne, mais pourquoi pas transformer ton fichier.doc en fichier.xml et faire du parsing xml

        Jamais testé, donc je ne m'avance pas trop
        • Partager sur Facebook
        • Partager sur Twitter
          23 septembre 2010 à 18:28:31

          @fred1599... Peut-être un peu compliqué ta méthode, non? enfin après je m'avance un peu trop, jamais testé non plus.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            23 septembre 2010 à 18:46:36

            Le fichier xml tu le crée avec word, ça c'est pas dur, mais c'est après que je ne sais pas comment est ressorti ton xml.
            • Partager sur Facebook
            • Partager sur Twitter
              23 septembre 2010 à 19:35:52

              Je vais voir du côté xml comme du côté de pywin32, merci à vous deux!
              • Partager sur Facebook
              • Partager sur Twitter
                29 septembre 2010 à 16:33:22

                Re-bonjour!

                import os
                
                
                def createMotivationLetter(file, fileTo, business, contact, adress, postalCode, date):
                    with open(file, 'r') as fileStream:
                        # ...
                


                J'aurais besoin d'aide ... je dois recréer le fichier en tenant compte des tabulations|retours à la ligne etc .. et créer un nouveau dans le dir fileTo en remplaçant des informations entre <> avec .replace() par les informations contenues dans les arguments business, contact, adress, postalCode et date. Si on peut m'aider ce serait super. Je sais pas comment procéder ni comment créer un nouveau fichier, etc.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  29 septembre 2010 à 18:13:40

                  Sérieusement j'ai lu, relu, j'ai toujours pas compris ce que tu souhaites faire.

                  En gros, met ce que tu as en entrée et ce que tu veux en sortie, avec un exemple c'est le top!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    29 septembre 2010 à 21:40:15

                    Entrée : D:\lettre_de_motivation_DEFAULT.txt :

                    Citation

                    Nom Prénom
                    Adresse Numéro
                    NPA Code Postal
                    Téléphone

                    <ENTREPRISE>
                    <PERSONNE DE CONTACT>
                    <ADRESSE>
                    <NPA | CODE POSTAL>



                    Fribourg, le <DATE>



                    Commande Python en appelant la fonction :
                    createMotivationLetter(file='D:\lettre_de_motivation_DEFAULT.txt',
                                           fileto='D:\lettre_de_motivation_fnac.txt',
                                           business='Fnac Sàrl',
                                           contact='Mr. Dupuis',
                                           adress='Avenue de la Gare 10',
                                           postalCode='1700 Fribourg',
                                           date='29 Septembre 2010')
                    


                    Sortie : D:\lettre_de_motivation_fnac.txt :

                    Citation

                    Nom Prénom
                    Adresse Numéro
                    NPA Code Postal
                    Téléphone

                    Fnac Sàrl
                    Mr. Dupuis
                    Avenue de la Gare 10
                    1700 Fribourg



                    Fribourg, le 27 Septembre 2010



                    En espérant que ça puisse t'aider (le deuxième fichier doit être créé par la fonction, si possible)
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      29 septembre 2010 à 21:48:10

                      Tu crées à chaque fois un nouveau fichier txt pour chaque entreprise?

                      En fait je ne vois pas l'utilité du fichier lettre_de_motivation_DEFAULT.txt.

                      Tu pourrais simplement ajouter grâce à ta fonction toutes les données dans ton fichier de sortie, non?

                      :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        29 septembre 2010 à 21:52:45

                        Oui, aussi. Mais c'est que suivant où je postule c'est pas la même lettre qu'il faut "copier" (:
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          29 septembre 2010 à 22:00:54

                          Citation

                          Oui, aussi. Mais c'est que suivant où je postule c'est pas la même lettre qu'il faut "copier"



                          En fait ne le prend pas mal, hein... :p

                          Mais je vois rien qui te permettrait d'alléger ton travail par rapport à un traitement de texte.

                          Ce que tu entres dans tes arguments est exactement ce que tu vas avoir en sortie, à moins que je n'ai pas tout compris :)

                          Et si c'est pas la même lettre que tu copies, c'est que tes arguments vont certainement changer, donc c'est pas très possible.

                          Un programme te permet de faire des choses répétitives la plupart du temps, et donc te simplifier la vie, mais là je vois pas...

                          • Partager sur Facebook
                          • Partager sur Twitter
                            29 septembre 2010 à 22:03:13

                            J'ai beaucoup de lettres de motivation à envoyer, avec chaque fois les informations que je recherche, avec disons les infos pour une lettre sur une ligne, séparés par un |, donc en gros c'est une boucle fera un nouveau fichier. Au lieu que cela me prenne 2-3 heures, ça peut me prendre 10s avec un script en Python, de plus la prog ça sert jamais à rien (:
                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              29 septembre 2010 à 22:08:12

                              Mais ce qui me turlupine, c'est que tu travailles avec du .doc alors qu'en sortie, ce que tu vas avoir c'est du .txt, donc je proposerais plutôt du publipostage avec excel et word, non?

                              Si c'était du .txt pourquoi pas, mais du .doc ça devient tout de suite plus complexe. Ce que je veux dire c'est qu'il faut choisir le bon langage en rapport avec ce que l'on veut.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                29 septembre 2010 à 22:10:22

                                A la base c'était du doc, mais j'ai adapté la lettre en .txt (j'ai juste plus les caractères gras et une ligne après la motif de la demande mais c'est pas grave)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  29 septembre 2010 à 22:24:32

                                  Pour sauter une ligne "\n"
                                  Pour une tabulation "\t"

                                  Je pense que tu sais écrire dans un fichier texte en python :)

                                  Pour le gras, pourquoi pas en HTML? Ok je sors... :'(
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    29 septembre 2010 à 22:34:50

                                    u_U j'ai eu la meme idée :D:D héhé. faire ecire ses lettre de motivation et ses CV par python (ou autre)... petit malin va...

                                    le code pourrai ressembler à cela : (moi je creerais deux fichier en fait, un pour recevoir l'information, un autre pour ecrir + une variable pour recevoir le texte à ecrir comme tu as fait)


                                    def creerLetter(getFile,setFile,**arg)
                                        fichier1 = open(getFile,'r')
                                        fichier2 = open(setFile,'a')
                                    
                                        for ligne in fichier.readlines():
                                           if '<ENTREPRISE>'in ligne :
                                              fichier2.write(arg['buiness']+ '\n') # buisness c'est ton argument buiseness = '...'
                                           else :
                                              fichier2.write(ligne)
                                    
                                        fichier1.close()
                                        fichier2.close()
                                    


                                    ^^ aller courage, c'est pas facil comme experience :D


                                    Sinon tu as ça : http://snippets.dzone.com/posts/show/2037
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      29 septembre 2010 à 22:57:44

                                      Merci.

                                      import os
                                      
                                      
                                      businessFile = ''
                                      letterFile   = ''
                                      directoryDoc = ''
                                      actualDay    = ''
                                      
                                      def createMotivationLetter(file, fileto, business, contact, adress, postalCode, date, demand):
                                          with open(file, 'r') as fileFrom:
                                              with open(fileto, 'a') as fileTo:
                                                  for line in fileFrom.readlines():
                                                      fileTo.write(line.replace('<ENTREPRISE>', business).replace('<PERSONNE DE CONTACT>', contact).replace('<ADRESSE>', adress).replace('<NPA | CODE POSTAL>', postalCode).replace('<DATE>', date).replace('<DEMANDE>', demand))
                                      
                                      for line in directoryFile.readlines().splitlines():
                                          args, arg = [], -1 
                                          for x in line.split('|'):
                                              args[arg+=1] = x
                                          createMotivationLetter(letterFile, directoDoc + '/lettre_de_motivation_%s.txt' % args[0].replace(' ', '_'), args[1], args[2], args[3], args[4], actualDay, 'Demande en vue d\'un emploi')
                                      
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        29 septembre 2010 à 23:35:08

                                        o_O c'est quoi with...as... : ?
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          30 septembre 2010 à 8:17:35

                                          Bonjour,

                                          Le mot-clef: with

                                          Citation : Realmagma


                                          Description: Le mot-clef 'with' signifiant 'avec' est utilisé pour les manipulations de fichiers et d'objets. Pour plus d'informations, se référer au tutoriel officiel.



                                          Le mot clef: as

                                          Citation : Realmagma

                                          Description: Le mot-clef 'as' signifie 'en tant que'; parfois utile dans un gros projet. Contrôleur d'espaces noms. Il permet entre autre, de renommer un module ou le nom d'un fichier pour éviter les conflits (entre des modules qui pourraient avoir le même nom par exemple).
                                          Pour plus d'informations, se référer au tutoriel officiel.



                                          Ici, on parcourt le fichier grâce à une simple boucle for en reprenant la variable /fileFrom/ définit précédemment grâce à:
                                          as fileFrom
                                          

                                          for line in fileFrom.readlines():
                                          

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Modifier des informations dans un fichier .doc

                                          × 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