Bonjour
Voici une programmequi fonctionne parfaitement.Il lit un fichier plat et extrait de cilui-ci les donnée et les affiche. Rien de complexeen soit.
Ce que je cherche a savoir c'est est-ce la bonne méthode ?Est-ce la meilleur solution ?
le code dit lanceur. __init__.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 # coding: utf-8 import string import sys import datetime import os from Explorateur import * from Les_Dates import * from class_all import entete l_entete = entete() # Base Application if __name__ == '__main__': open_ok =False nom_fichier_path_in = explorateur_window(".//") # Recherche via explorateur if os.path.isfile(nom_fichier_path_in): # Ouverture du fichier destination nom_fichier_in = os.path.basename(nom_fichier_path_in) # Retourne le nom du fichier nom_fichier_path = os.path.dirname(nom_fichier_path_in) # Retourne le répertoire comple list_nf = os.path.split(nom_fichier_path_in) # Fractionne le chemin d'acc�s. Retourne un tuple print(nom_fichier_path_in) with open(nom_fichier_path_in, 'r') as fichier: # traitement du fichier for ligne in fichier: if(ligne[0:3] == "000"): l_entete.ext_entete(ligne) l_entete.__str__()
Explorateur
Les_Dates
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 # coding: utf-8 import tkinter from tkinter.filedialog import askopenfilename '''Created on 21 aout 2017 @author: jiji ''' def explorateur_window(repertoireinit): """ Explorateur Windows """ #root = tkinter.Tk() filename = tkinter.filedialog.askopenfilename( initialdir=repertoireinit, title="Choisir votre fichier", filetypes=( ("Fichier .txt", "*.txt"), ("Tous type de fichier","*.*") ) ) return filename pass
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 # coding: utf-8 import time import datetime def cvt_date_aaaammjj(src): if(src=="00000000"): return None elif(src=="000000"): return None elif(src==" "): return None else: alpha_aaaa = src[0:4] alpha_mm = src[4:6] alpha_jj = src[6:8] date_format = '%Y/%m/%d' my_date=alpha_aaaa+"/"+ alpha_mm + "/"+alpha_jj try : valid_date = datetime.datetime.strptime(my_date, date_format) valid_date_ = datetime.date(valid_date.year, valid_date.month,valid_date.day) return valid_date_ except ValueError: print('%s Date invalide !' % my_date) return None pass
class_all
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 # coding: utf-8 #lecture du nom des feuilles from Les_Dates import * class entete(object): def __init__(self): self.Nom_element=None self.Type_enregistrement=None self.Emetteur_fichier=None self.Destinataire_fichier=None self.Date_exploitation=None self.Code_Norme=None self.Version_Norme=None self.Filler=None def ext_entete(self,datalu): print(datalu) self.Type_enregistrement = datalu[0:3] # Alimenté avec 000 self.Emetteur_fichier = datalu[3:17] # N°» self.Destinataire_fichier = datalu[17:31] # Fixe » self.Date_exploitation = str( cvt_date_aammjj ( datalu[31:39] ) ) # Format AAAAMMDD self.Code_Norme = datalu[39:49] # (blancs après) self.Version_Norme = datalu[49:59] # Exemple : 1.00 self.Filler = datalu[59:999] # Zone libre def __str__(self): print("Type_enregistrement :" + self.Type_enregistrement + '\n') print("Emetteur_fichier :" + self.Emetteur_fichier + '\n') print("Destinataire_fichier :" + self.Destinataire_fichier + '\n') print("Date_exploitation :" + self.Date_exploitation + '\n') print("Code_Norme :" + self.Code_Norme + '\n') print("Version_Norme :" + self.Version_Norme + '\n') print("Filler :" + self.Filler + '\n')
des generateurs de code vont crer ceci pour la classe entete , des outils tel que BOUML
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class entete_1(object): def __init__(self,Nom_element,Type_enregistrement,Emetteur_fichier,Destinataire_fichier,Date_exploitation,Code_Norme,Version_Norme,Filler): self.Nom_element=Nom_element self.Type_enregistrement=Type_enregistrement self.Emetteur_fichier=Emetteur_fichier self.Destinataire_fichier=Destinataire_fichier self.Date_exploitation=Date_exploitation self.Code_Norme=Code_Norme self.Version_Norme=Version_Norme self.Filler=Filler
mais pour autant cela ne me semble pas pertinant car il faut ajouter toutes les les informations dans la creation de l'objet .
il faudrait modifier l'appel à la classe
avec autant de zone que de variable
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_entete = entete_1(None, .... None)
ou mettreavec laconvertion de données et j trouve que cette solution n'est pas top ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_entete = entete_1(ligne[0:3], .... )
Solution N2 pour la classe entete
dans __init__2.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 class entete(object): def __init__(self,Nom_element,Type_enregistrement,Emetteur_fichier,Destinataire_fichier,Date_exploitation,Code_Norme,Version_Norme,Filler): self.Nom_element=Nom_element self.Type_enregistrement=Type_enregistrement self.Emetteur_fichier=Emetteur_fichier self.Destinataire_fichier=Destinataire_fichier self.Date_exploitation=Date_exploitation self.Code_Norme=Code_Norme self.Version_Norme=Version_Norme self.Filler=Filler def ext_entete(self,datalu): print(datalu) self.Type_enregistrement = datalu[0:3] # Alimenté avec 000 self.Emetteur_fichier = datalu[3:17] # self.Destinataire_fichier = datalu[17:31] # » self.Date_exploitation = str( cvt_date_aammjj ( datalu[31:39] ) ) # Format AAAAMMDD self.Code_Norme = datalu[39:49] # T(blancs après) self.Version_Norme = datalu[49:59] # Exemple : 1.00 self.Filler = datalu[59:999] # Zone libre def __str__(self): print("Type_enregistrement :" + self.Type_enregistrement + '\n') print("Emetteur_fichier :" + self.Emetteur_fichier + '\n') print("Destinataire_fichier :" + self.Destinataire_fichier + '\n') print("Date_exploitation :" + self.Date_exploitation + '\n') print("Code_Norme :" + self.Code_Norme + '\n') print("Version_Norme :" + self.Version_Norme + '\n') print("Filler :" + self.Filler + '\n')
la creation de l'objet entete
Mais est-ce plus pertinant?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 l_entete = entete(None,None,None,None,None,None,None,None)
Partager