Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lire un fichier MS Works (.wps)

Sujet résolu
    25 septembre 2023 à 12:11:07

    Bonjour,

    N'ayant plus MS Works depuis longtemps, je me demandais si il serait possible de créer un code Python qui permettrait de lire ce type de fichier

    J'ai bien commencé à écrire un code qui en affiche le contenu mais sans pouvoir éliminer les infos d'en-tête et de fin de fichier

    (qui sont en principe des indications pour MS Works, fontes de caractères, tailles, etc...)

    -
    Edité par Phil_1857 25 septembre 2023 à 12:12:16

    • Partager sur Facebook
    • Partager sur Twitter
      26 septembre 2023 à 14:49:57

      Il n'y a pas moyen de filtrer la partie contenu ? (pas de délimiteurs particuliers pour les entêtes ou une taille de bloc d'entête?)
      J'ai vu qu'il y avait une librairie libwps (https://sourceforge.net/p/libwps/wiki/Home/)

      J'ai aussi lu qu'on pouvait les ouvrir avec Word ou LibreOffice pour les convertir en doc (à voir) 

      • Partager sur Facebook
      • Partager sur Twitter
        26 septembre 2023 à 15:21:26

        Bonjour Umfred,

        Non, pas de délimiteur particulier, apparemment, ni de taille fixe d'en-tête

        Après, je ne voulais pas les ouvrir avec Word, je voulais juste m'amuser

        à lire le binaire et le convertir pour afficher le texte ASCII, bref,

        à écrire le code moi-même :-) 

        On peut les ouvrir avec Word, le texte est lisible, mais on a des caractères

        bizarres au début et à la fin ...

        -
        Edité par Phil_1857 26 septembre 2023 à 15:23:44

        • Partager sur Facebook
        • Partager sur Twitter
          26 septembre 2023 à 17:11:53

          probablement les BOM (il faudrait l'ouvrir avec un éditeur hexa (ou lecture binaire) pour voir si ça correspond)
           https://fr.wikipedia.org/wiki/Indicateur_d%27ordre_des_octets#Repr%C3%A9sentations_des_indicateurs_d'ordre_d'octets_par_codage
          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2023 à 17:23:42

            Effectivement, j'utilise UE32 comme éditeur de texte et ça donne ceci:

            Et quand on bascule du mode hexa (flèche rouge), ça donne ça:

            • Partager sur Facebook
            • Partager sur Twitter
              27 septembre 2023 à 14:44:39

              peut-être à confirmer avec d'autres fichiers, mais le contenu du document semble commencer à l'adresse 80h ( ici on un saut de ligne (0x0D 0x0A = RetourChariot + LineFeed)
              On voir aussi 2 caractères 0x01 (SOH = Start of Heading) début d'entête.
              • Partager sur Facebook
              • Partager sur Twitter
                27 septembre 2023 à 15:58:00

                Bonjour Umfred,

                OK, je vais regarder dans ce sens ...

                • Partager sur Facebook
                • Partager sur Twitter
                  27 septembre 2023 à 15:59:29

                  Apparemment quelqu'un a déjà fait cela en python2: Reading Microsoft Works WPS files in Python
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 septembre 2023 à 16:06:28

                    Oui, j'ai déjà vu ce code, mais:

                    1_ je voulais faire un truc par moi-même 

                    2_ c'est une version 2 de Python, je pense, et donc ceci ne fonctionne plus (entre autres) :

                     with open(self.file_name, "rb") as fd:
                                buff = fd.read()
                            matches = self.magic_pattern.search(buff)

                    fd.read rend un objet de type byte array et non une string, donc pas de méthode .search() applicable


                    Il faudrait donc analyser tout ce code pour le comprendre et faire toutes les modifs nécessaires ...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 septembre 2023 à 17:31:29

                      Phil_1857 a écrit:

                      1_ je voulais faire un truc par moi-même 

                      Eh bien ça donne une idée des difficultés à résoudre dont une bonne partie est la compréhension de la structure du fichier binaire.

                      Après si vous voulez faire un truc par vous même, pourquoi demander de l'aide?

                      Phil_1857 a écrit:

                      c'est une version 2 de Python, je pense, et donc ceci ne fonctionne plus (entre autres)

                      Avant d'imaginer une migration du python3, il pourrait être judicieux de vérifier que ça répond à votre besoin. Et si c'est le cas, ça se migre (avec de l'aide).

                      note: des regexp sur des bytes fonctionnent, il suffit de préfixer avec b.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 septembre 2023 à 18:54:32

                        J'ai vu que tu avais aussi posté ta demande sur CCM https://forums.commentcamarche.net/forum/affich-37915508-lire-un-fichier-genere-par-le-vieux-logiciel-ms-works 

                        Ton éditeur hexa a masqué pas mal d'octets de tes fichiers sur la capture que tu nous as fourni :/ 

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 septembre 2023 à 11:13:13

                          Bonjour Umfred,

                          Effectivement, et finalement l'idée est de récupérer des segments avec des caractères valides, et d'afficher le plus long

                          ca fonctionne pas mal

                          -
                          Edité par Phil_1857 28 septembre 2023 à 11:14:56

                          • Partager sur Facebook
                          • Partager sur Twitter

                          Lire un fichier MS Works (.wps)

                          × 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