Bonjour à tous,

J'ai écris un code python afin de vérifier la présence de plusieurs fichiers dans un repertoire et qui permet de supprimé les lignes vides de plusieurs fichiers csv. (==> Le code fonctionne très bien)
Mon souci provient du fait qu'un champ d'un fichier csv contient plusieurs lignes de données et je ne sais pas comment le traiter, peut être un souci d'encodage ? (en effet lorsque j'ouvre le csv avec Excel le champs en question contient un double quote au début (et pas à la fin), et Excel le voit bien comme un champ avec une seule information...
En l'ouvrant sous python, y'a plusieurs lignes dans le même champs...

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# Fonction de vérification des fichiers exportés
def verifier_fichier_export(fichier_parametre, chemin):
    print('**************************************************')
    print('Lancement de la fonction de verification des fichiers')
    print('**************************************************')
    log.info('START Verifier Fichier Export')
    # Depart du timer pour compter le temps d'execution
    depart_timer = time.perf_counter()
    dossier = os.listdir(chemin)
    data = pd.read_excel(fichier_parametre, sheet_name='X', engine='pyxlsb')
    df = pd.DataFrame(data)
    bool_var = False
    for i in df.index:
        fichier = df['Nouveau nom'][i]
        if fichier not in dossier:
            print(f'Le fichier "{fichier}" n est pas présent dans le dossier "{chemin}"')
            log.info('Absence du fichier : ' + fichier + ' dans le repertoire ' + chemin)
            bool_var = True
        else:
            if '.csv' in fichier:
                #try:
                csv.field_size_limit(100000000)
                csv.field_size_limit()
                file_object = open(chemin + fichier, 'r', encoding="cp437")
                lines = csv.reader(file_object, delimiter=';', quotechar='"')
                flag = 0
                data = []
                num_ligne = 1
                # Pour chaque ligne du fichier csv
                for line in lines:
                    num_ligne = num_ligne + 1
                    # On vérifie si tous les champs sont vides
                    var = 0
                    for obj in line:
                        if ('"' in obj) and (obj.count('"') == 1) and (obj.count(';') > 3):
                            obj = obj.replace('"', '')
                            for el in obj.split(";"):
                                obj = el
                        if obj == '':
                            var = var + 1
                    # Si tous les champs sont vides alors on ne prends pas la ligne vide
                    if len(line) == var:
                        print("Suppression de la ligne vide numéro", num_ligne, 'du fichier', fichier)
                        flag = 1
                        continue
                    else:
                        data.append(line)
                file_object.close()
                if flag == 1:  # if blank line is present in file
                    file_object = open(chemin + fichier, 'w')
                    for line in data:
                        file_object.write(';'.join(line) + "\n")
                    file_object.close()
                #except Exception as e:
                    #print(e, fichier, num_ligne)
    # On arrête la poursuite du traitement s'il manque des fichiers
    if bool_var == True:
        sys.exit()
        log.info('END Verifier Fichier Export : un ou plusieurs fichiers sont manquants')
        print('Arrêt du programme car un ou plusieurs fichiers sont manquants pour permettre de poursuivre le traitement')
    else:
        # Temps d'execution du programme
        fin_timer = time.perf_counter()
        temps_timer = (fin_timer - depart_timer)
        print('Les fichiers sont tous présents dans le dossier.')
        print(f'Tache terminée en {temps_timer:0.4f} secondes.')
        log.info('END Verifier Fichier Export')
Merci d'avance pour votre aide.

GK