Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 05/02/2025, à 18:29

-= yehyoman =-

[In Progress...] Projet personnel, GROS fichier et REGEX

Bonjour,

je poste ici aujourd'hui car je me retrouve face a un problème, je dois donc faire des choix… et surtout trouver LES BON OUTILS pour y parvenir ;  mais surtout je tiens a savoir si le projet est réalisable : comme aiment a le rappeler certains-nes : « On ne demande pas à un cheval de pondre un œuf » bref.
Le choix du bon outil est primordial, je ne veux pas me retrouver dans la situation d’ « Essayer de vider l'océan avec une cuillère ». Pour le moment les outils que j’ai sont principalement du front-end sur le WEB (HTML, CSS, PHP, MySQL, JS) quelques notions de base en C/C++ et Qt niveau hello world et ça date un peu d'ailleur ! et un peu de BASH.

C’est pourquoi je suis ici en quête d’information, il est possible que la solution n’ai rien a voir avec Ubuntu ou même Linux (quoi que ! chiche !!) alors je m’excuse d’avance pour mon poste. La communauté de ce forum a toujours répondu aux galères et problèmes et c’est toujours un plaisir d’apprendre des autres… alors merci à toutes et tous…

Je vais donc partir de la source, vous expliquer le résultat attendu, et les piste que j’ai de mon côté.
La matière première se sont de GROS fichier TXT qui proviennent de sauvegardes d’une machine qui enregistre la totalité d’une plage de paramètres et leur évolution dans le temps. Un petit fichier mesure environ 12000 lignes pour pas loin de 400000 caractères environs et il n’y a pas de max car tout dépend de la durée sur laquelle les paramètres sont capturé.
Dans le fichier il y a plusieurs zones avec des structures assez simple et redondante dont voici quelque extrait :

 $$Interpolated 
   $$CurveData  0@0 1@0 2@0 3@0 4@0 5@0 6@0 7@0 8@0 9@0 10@0 11@0 12@0 13@0
   $$CurveData  14@0 15@0 16@0 17@0 18@0 19@0 20@0 21@0 22@0 23@0 24@0 25@0
   $$CurveData  26@1 27@1 28@1 29@1 30@1 31@1 32@1 33@1 34@2 35@2 36@2 37@2
   $$CurveData  38@2 39@2 40@3 41@3 42@3 43@3 44@4 45@4 46@4 47@5 48@5 49@5
   $$CurveData  50@6 51@6 52@6 53@7 54@7 55@8 56@8 57@9 58@9 59@10 60@11 61@11
   $$CurveData  62@12 63@13 64@13 65@14 66@14 67@15 68@16 69@16 70@17 71@17
   $$CurveData  72@18 73@19 74@19 75@20 76@21 77@21 78@22 79@23 80@24 81@25
   $$CurveData  82@25 83@26 84@27 85@28 86@28 87@29 88@30 89@30 90@32 91@33
   $$CurveData  92@33 93@34 94@35 95@36 96@37 97@38 98@39 99@40 100@41 101@42
   $$CurveData  102@42 103@43 104@44 105@45 106@46 107@47 108@48 109@49 110@50
   $$CurveData  111@51 112@52 113@53 114@54 115@55 116@56 117@56 118@58 119@59
   STEP 1 1
   A-Time 0.1
   $$TimeU 0.1 0 0 1
   B-Time 0.1
   $$TimeD 0.1 0 1 1
   $$TimeP 0.1 0 1 1
   $$TimeC 0.1 0 1 1
   $$TimeG 0.1 0 1 1
   $$Move  1@H58 2@H59 3@H58 4@H56 5@H56 21@H3b 22@H3b 23@H47 24@H47
   $$Move  41@H46 42@H33 43@H29 44@H29 45@H32 46@H44 51@H4dd3 52@H4dd3
   $$Move  53@H4c4a 54@H4c4a 55@H4c4a 56@H4dd3 57@H4bc7 58@H4ccd 59@H7f7d
   $$Move  60@H7f7d 61@H7f7d 62@H7f7d 71@H41 72@H46
   Stat  1@H58 2@H59 3@H58 4@H56 5@H56 21@H3b 22@H3b 23@H47 24@H47 30@H34
   Stat  41@H46 42@H33 43@H29 44@H29 45@H32 46@H44 51@H4e 52@H4e 53@H4c
   Stat  54@H4c 55@H4c 56@H4e 57@H4c 58@H4d 59@H7f 60@H7f 61@H7f 62@H7f
   Stat  71@H41 72@H46

Le but recherché étant de sélectionner des paramètres précis et choisi par l’utilisateur via une interface (…graphique de préférence). Pour ensuite les retranscrire dans une forme plus compacte par exemple Format HTML pour affichage sur écran puis en format PDF en A4 pour impression papier.
L’idée de base :

=> Utiliser les REGEX pour capturer les bons paramètres,

=> Créer un GROS Tableau avec ces paramètres et leur évolution dans le temps,
(pas besoin de définir un temps de départ et de fin différent il faudra dans tous les cas couvrir la totalité du temps) ,

=> Générer une page HTML pour mettre en forme le tableau en fonction des paramètres choisi par l’utilisateur.

=> Trouver un moyen de Conversion vers le Format PDF qui puisse couper proprement a chaque changement de page A4 (saut de page).

Le souci c’est que pour effectuer des REGEX sur aussi gros je ne sais pas comment m’y prendre, cela dépasse mes compétences. A mon niveau je ne vois pas comment charger la totalité du fichier dans une variable type « string » pour ensuite effectuer mes REGEX dessus… c’est beaucoup trop gros ça va forcément planter !!!
Et si dans un premier temps on charge chaque ligne dans un tableau, cela reviens au même ou pas ? j’ai lu quelque part qu’un ARRAY en JavaScript est limité à 32 bits ? est-ce que c’est vrai ?

Dans ce cas est-ce qu’il faut envisager l’utilisation d’une BDD pour chaque projet que l’on pourra effacer une fois le travail terminé ?
Je ne sais pas sur quel outil me lancer, et la bonne démarche à suivre…

J’ai regardé quelques démonstration/tuto de Python sur Tkinter : est-ce la/une bonne solution dans mon cas ?
Je suis preneur de tout suggestions, idées, tutos… bonne soirée à toutes-tous.

Dernière modification par -= yehyoman =- (Le 07/02/2025, à 13:43)


00101011 00100000 01101111 01101110 00100000 01101001 01101101 01110000 01101111 01110011 01100101 00100000 01100100 00100000 01100011 01101111 01101110 01110100 01110010 01100001 01101001 01101110 01110100 01100101 01110011 00100000 00101011 00100000 01101111 01101110 00100000 01110011 01100101 00100000 01101100 01101001 01100010 11101000 01110010 01100101

Hors ligne

#2 Le 06/02/2025, à 21:40

Vobul

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

T'es pas obligé de tout charger en mémoire, tu peux bosser ligne par ligne. Tu pourrais partager un exemple de fichier complet ? La première étape c'est de faire un truc en CLI qui fonctionne, après l'interface graphique c'est facile. Tu pourrais aussi préciser le genre de paramètres que l'utilisateur pourrait choisir ? C'est très abscon ton truc là.


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#3 Le 06/02/2025, à 22:16

-= yehyoman =-

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

oui je suis en train de me mettre au python tout doucement... et Tkinter a l'air assez simple et ce sera suffisant pour mon interface utilisateur.

j'ai cru comprendre qu'on peut utilisé grep avec python ! cool

du coup on pourais imaginer

1- localiser les bonnes lignes avec un grep ?
2- extraire la / les ligne(s) dans un String
3- stocker les données des lignes dans un dataFrame grace au Regex

et faire tout cela en boucle pour tous les parametres.

de cette manière jamais besoin de charger le fichier en entier ?

esst-ce une solution viable ? ou je suis a coté de la plaque ?

les parametres sont les $$TimeG par exemple cela correspond  à une valeur de temps en seconde 0.1 par exemple soit 100ms, il peut y avoir aussi du texte lorsque un Step a été Nomé mais c'est plutôt rare, le reste du temps se sont des niveaux pour chaque parametre numéroté du style >> 1@H55
le parametre 1 avec une valeur codé sur 8bits en hexadécimal sur 2 chiffres
et parfois aussi codé en 16bits sur 4 chifres >> 51@H3439

Dernière modification par -= yehyoman =- (Le 06/02/2025, à 22:33)


00101011 00100000 01101111 01101110 00100000 01101001 01101101 01110000 01101111 01110011 01100101 00100000 01100100 00100000 01100011 01101111 01101110 01110100 01110010 01100001 01101001 01101110 01110100 01100101 01110011 00100000 00101011 00100000 01101111 01101110 00100000 01110011 01100101 00100000 01101100 01101001 01100010 11101000 01110010 01100101

Hors ligne

#4 Le 06/02/2025, à 22:43

Watael

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

j'ai cru comprendre qu'on peut utilisé grep avec python ! cool

non, pas cool.
python peut le faire, mais c'est crado, et surtout il possède un module re, qui évitera les tarabiscotages entre les appels shell et python.
il y a peut-être un autre module mieux adapter à ton cas...

d'ailleurs, si le format de tes données est connu, il y a de fortes probabilités qu'un module python existe déjà.

Dernière modification par Watael (Le 06/02/2025, à 22:44)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#5 Le 07/02/2025, à 10:26

iznobe

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

Bonjour , à mon avis , en plus d ' un exemple de fichier , il faudrait que tu definnises " en vrai " ce que tu appelles : " les bonnes lignes " .

1- localiser les bonnes lignes avec un grep ?

qu ' ont elles de particulier qui les differencie du reste ? comment est il possible de les identifier ?

Dernière modification par iznobe (Le 07/02/2025, à 10:27)


retour COMPLET et utilisable de commande
MSI Z490A-pro , i7 10700 , 32 GB RAM .

En ligne

#6 Le 07/02/2025, à 13:40

-= yehyoman =-

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

Je parcours la documentation Python depuis ces deux dernier jours, car il fallais bien commencer quelque part... et j'avais un bon pressentiment sur ce language que je ne connaissais pas vraiment jusqu'ici. Mais dont j'avais déjà beaucoup entendu parlé par ci parla...

atout majeur la documentation et la ref est tres bien détailé, et même en Français parfois, beaucoup d'exemples et de tutos disponible je pense que je tiens LA pépite, et se sera bien plus puissant/rapide que javascript

Je doit avouer que déjà ne plus utiliser de point virgule en fin de lignes c'est déjà quelque chose. Mais je viens de faire quelques essais, et a priori, ça va tres bien fonctionner, j'ai fait quelques petits bouts de code dans des projets séparés pour tester les fonctions principals dont je vais avoir besoin :

ouverture de fichier OK (module filedialog) test OK,
recherche regex (module re) OK,
lecture de ligne spécifique du fichier test OK, grace nottamment à open() + enumerate(file_pointer), OK
mise en tableau dataFrame (module pandas) test OK,
interface graphique OK (module Tkinter) test OK,
generation du fichier HTML en sortie (???) recherche en cours...
generation du fichier PDF pour version papier (???) recherche en cours...

Alléluia !!!
j'ai pratiquement trouver et tester tous les modules et function dont je vais avoir besoin en entré, il ne me reste plus qu'à trouver ceux pour générer du HTML et PDF en sortie

HTML :
Bon à la base je pense que file.write() peut suffir largement mais niveau module il y a le choix... vdonc je vais pas me priver
piste de recherche actuel -> [Tinyhtml, htpy, PyHTML, dominate (tres lisp:))]

pas encore testé...

PDF :
[fpdf2]
nottament possiblité de Conversion de base de HTML en PDF avec write_html()
et egalement possibilté d'ecrire directemnt un Tableau en PDF avec with pdf.table() as table:

pas encore testé...

Bon bien sûr il va me falloir du temps pour apprendre a bien utiliser chaque function et module, puis associer le tout proprement ; car j'apprends le python depuis seulement 2 jours. Mais je pense que je vais y arriver...avec un peu (voir beaucoup de temps au pire des cas...)

Avez vous des conseils et bonne pratique pour organniser mon CODE proprement en python ? est-ce qu'il y a des particularités propre a ce language ?
après j'imagine que c'est propre a chacun bien sûr... mais "ce qu'il ne faut absolument pas faire" serai un bon point de départ ?

Dernière modification par -= yehyoman =- (Le 07/02/2025, à 13:59)


00101011 00100000 01101111 01101110 00100000 01101001 01101101 01110000 01101111 01110011 01100101 00100000 01100100 00100000 01100011 01101111 01101110 01110100 01110010 01100001 01101001 01101110 01110100 01100101 01110011 00100000 00101011 00100000 01101111 01101110 00100000 01110011 01100101 00100000 01101100 01101001 01100010 11101000 01110010 01100101

Hors ligne

#7 Le 07/02/2025, à 19:29

Vobul

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

> Avez vous des conseils et bonne pratique pour organniser mon CODE proprement en python ?

Oui, python a un mécanisme de modules assez pratique pour organiser ton code. Mais tant que ton programme ne fait pas plus de 150 lignes, te prends pas la tête avec ça. Tu découvres le langage, tu vas faire du spaghetti code, mais c'est pas grave si ça fonctionne, en tout cas dans un premier temps ! wink

> est-ce qu'il y a des particularités propre a ce language ?

Plein ! Facile à lire, à écrire, à apprendre, plutôt lent mais dans la plupart des cas on s'en fout. Après il existe ce qu'on appelle des idiomes. Tu peux peut-être commencer par là : https://learnpythontherightway.com/

> mais "ce qu'il ne faut absolument pas faire" serai un bon point de départ ?

Exécuter du code trouvé sur internet que tu ne comprends pas wink

Dernière modification par Vobul (Le 07/02/2025, à 19:29)


Vobul
Utilisez le retour utilisable de commandes !!!
J'aime la langue française, mais je parle franglais, deal with it.
RTFM

Hors ligne

#8 Le 08/02/2025, à 07:41

MPython Alaplancha

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

Bonjour.

J’ai regardé quelques démonstration/tuto de Python sur Tkinter : est-ce la/une bonne solution dans mon cas ?

Pour info, il existe aussi d'autres alternatives encore plus simple comme PySimpleGUI

la ref est tres bien détailé, et même en Français parfois

Il faut en remercier les traducteurs bénévoles de l'AFPY (Association Francophone Python) wink

mais "ce qu'il ne faut absolument pas faire" serai un bon point de départ ?

Ne pas sauter les étapes :
D'abord suivre un tutoriel pour apprendre les fondamentaux du langage. à raison de 2 heures/jours ça devrait te prendre 4 à 6 semaines.
Puis, consolider les connaissances nouvellement acquises via des exercices (comme par exemple https://genepy.org/) . ça t'apportera la culture nécessaire pour reconnaître et résolver certaines situations.
Si tu sautes une de ses étapes, tu vas vite galérer...


# Debian12 Mate

Hors ligne

#9 Le 08/02/2025, à 12:11

lann

Re : [In Progress...] Projet personnel, GROS fichier et REGEX

Le bon lien : https://genepy.org/
Il y avait la parenthèse avec le lien


<Modéré>

Hors ligne