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.

#26 Le 20/11/2018, à 08:53

bipede

Re : Lecture fichier Csv

import sys
import csv
import glob
import os

repertoire=sys.argv[1]
fic=glob.glob('*.csv')[0]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            nom = row[0].strip("'")
            serveur= 'Inconnu-' + nom
            if 'las' in nom:
                serveur = "Tomc-" + nom
            elif 'lht' in nom:
                serveur = "Ap-" + nom
            elif 'ldb' in nom:
                serveur = "Bdd-" + nom
            writer.writerow(["HOST","ADD", serveur, row[1].replace("'", "")])
csvFile.close()

Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#27 Le 20/11/2018, à 08:58

sylpard

Re : Lecture fichier Csv

oui c'est ce que je te disais car j' ai ajouté cette information après coup désolé .

en fait les nom machines se termine par deux caractères numérique et juste avant trois lettres :

soit las ou lht ou ldb .

en fonction de ces trois lettre il faudrait pouvoir ajouter  au nom machine les cas suivant :

las => Tomc (tomcat)
lht => Ap (apache)
ldb => Bdd (base de données)

du coup dans l' exemple il y aurait Tomc-pdacctelas01

Hors ligne

#28 Le 20/11/2018, à 09:04

sylpard

Re : Lecture fichier Csv

Merci Bipède c'est cela !
j'ai plus qu' a essayer de comprendre .....:-)

Hors ligne

#29 Le 20/11/2018, à 09:26

pingouinux

Re : Lecture fichier Csv

Autre façon de faire :

Au début du script

import re
typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}

puis

        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join(typ[suffix],row0), row[1].replace("'", "")])

Hors ligne

#30 Le 20/11/2018, à 09:32

sylpard

Re : Lecture fichier Csv

Ok effectivement autre méthode !

Merci à vous pour votre aide !!

Hors ligne

#31 Le 20/11/2018, à 09:51

sylpard

Re : Lecture fichier Csv

si je veux ajouter en bout de mon fichier csv

HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HOST;APPLY;Ap-pdacctelht03

j'ai fait comme cela :

import sys
import csv
import glob
import os

# d?finition du repertoir d' export"
repertoire="export"

# renvoi le fichier avec l' extension csv vers la variable fic
fic=glob.glob('*.csv')[0]

# ouverture et
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
# recuperation du nom du fichier source et suppression de l' extension
    racine=repr(csvFile).split("'")[1].replace('.csv','')
# lecture et ecriture des fichiers source et resultat avec mise en forme
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            nom = row[0].strip("'")
            serveur= 'Inconnu-' + nom
            if 'las' in nom:
                serveur = "Tomc-" + nom
            elif 'lht' in nom:
                serveur = "Ap-" + nom
            elif 'ldb' in nom:
                serveur = "Bdd-" + nom
            writer.writerow(["HOST","ADD", serveur, row[1].replace("'", "")])
            writer.writerow(["HOST","APPLYTPL", serveur])

csvFile.close()

mais le soucis c'est qu' il m' intercalle les lignes et moi j'aurais besoin qu' il me fasse des blocs:

HG;ADD;ACCTE
HOST;ADD;Tomc-pdacctelas01;10.xxx.16.45
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;ADD;Ap-pdacctelht01;10.xxx.11.42
HOST;APPLYTPL;Ap-pdacctelht01
HOST;ADD;Tomc-pdacctelas02;10.xxx.16.46
HOST;APPLYTPL;Tomc-pdacctelas02
HOST;ADD;Ap-pdacctelht02;10.xxx.11.48
HOST;APPLYTPL;Ap-pdacctelht02
HOST;ADD;Tomc-pdacctelas03;10.xxx.16.47
HOST;APPLYTPL;Tomc-pdacctelas03
HOST;ADD;Ap-pdacctelht03;10.xxx.11.255
HOST;APPLYTPL;Ap-pdacctelht03
HG;ADD;ACCTE
HOST;ADD;Tomc-pdacctelas01;10.xxx.16.45
HOST;ADD;Ap-pdacctelht01;10.xxx.11.42
HOST;ADD;Tomc-pdacctelas02;10.xxx.16.46
HOST;ADD;Ap-pdacctelht02;10.xxx.11.48
HOST;ADD;Tomc-pdacctelas03;10.xxx.16.47
HOST;ADD;Ap-pdacctelht03;10.xxx.11.255
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HOST;APPLY;Ap-pdacctelht03

Dernière modification par sylpard (Le 20/11/2018, à 09:59)

Hors ligne

#32 Le 20/11/2018, à 10:08

pingouinux

Re : Lecture fichier Csv

Essaye ceci :

Avant la boucle

cumul=[]

Dans la boucle

            writer.writerow(["HOST","ADD", serveur, row[1].replace("'", "")])
            cumul.append(["HOST","APPLYTPL", serveur])

Après la boucle

            for ligne in cumul: writer.writerow(ligne)

Hors ligne

#33 Le 20/11/2018, à 10:31

sylpard

Re : Lecture fichier Csv

j'ai fais ceci:

import sys
import csv
import glob
import os

repertoire="export"
fic=glob.glob('*.csv')[0]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    cumul=[]
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            for ligne in cumul: writer.writerow(ligne)
            nom = row[0].strip("'")
            serveur= 'Inconnu-' + nom
            if 'las' in nom:
                serveur = "Tomc-" + nom
            elif 'lht' in nom:
                serveur = "Ap-" + nom
            elif 'ldb' in nom:
                serveur = "Bdd-" + nom
            writer.writerow(["HOST","ADD", serveur, row[1].replace("'", "")])
            cumul.append(["HOST","APPLYTPL", serveur])

csvFile.close()

mais le resultat .....:(

HG;ADD;ACCTE
HOST;ADD;Tomc-pdacctelas01;10.xxx.16.45
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;ADD;Ap-pdacctelht01;10.xxx.11.42
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;APPLYTPL;Ap-pdacctelht01
HOST;ADD;Tomc-pdacctelas02;10.xxx.16.46
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;APPLYTPL;Ap-pdacctelht01
HOST;APPLYTPL;Tomc-pdacctelas02
HOST;ADD;Ap-pdacctelht02;10.xxx.11.48
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;APPLYTPL;Ap-pdacctelht01
HOST;APPLYTPL;Tomc-pdacctelas02
HOST;APPLYTPL;Ap-pdacctelht02
HOST;ADD;Tomc-pdacctelas03;10.xxx.16.47
HOST;APPLYTPL;Tomc-pdacctelas01
HOST;APPLYTPL;Ap-pdacctelht01
HOST;APPLYTPL;Tomc-pdacctelas02
HOST;APPLYTPL;Ap-pdacctelht02
HOST;APPLYTPL;Tomc-pdacctelas03
HOST;ADD;Ap-pdacctelht03;10.xxx.11.255

bref je séche ! roll

Dernière modification par sylpard (Le 20/11/2018, à 11:21)

Hors ligne

#34 Le 20/11/2018, à 11:17

bipede

Re : Lecture fichier Csv

Avec la ligne

for ligne in cumul: writer.writerow(ligne)

placée en début de boucle tu le reportes intégralement dans ton fichier à chaque passage dans la boucle.
Tu devrais revoir tes connaissances en algorithmie...

Dernière modification par bipede (Le 20/11/2018, à 11:19)


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#35 Le 20/11/2018, à 11:21

bipede

Re : Lecture fichier Csv

pingouinux a écrit :

Autre façon de faire :

Au début du script

import re
typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}

puis

        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join(typ[suffix],row0), row[1].replace("'", "")])

T'as peur de rien, vu son niveau, l'engager dans les expressions régulières c'est prendre le risque d'une implosion des neurones...

Dernière modification par bipede (Le 20/11/2018, à 11:22)


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#36 Le 20/11/2018, à 11:24

sylpard

Re : Lecture fichier Csv

bon je pourrais le prendre mal big_smile mais effectivement je début en python ..... alors l' algorithmie c'est à un tout petit niveau ! mais je soigne :-)

Ce qui est sur c'est que je sèche sur cette histoire de boucle ...

Dernière modification par sylpard (Le 20/11/2018, à 11:40)

Hors ligne

#37 Le 20/11/2018, à 11:51

pingouinux

Re : Lecture fichier Csv

@bipede #35 :
Ça paraît peut-être plus compliqué, mais je ne récupère que les 3 caractères situés juste avant la partie numérique.
Si par exemple nom vaut helasldb02, ta méthode en #26 va récupérer las et non ldb.

Hors ligne

#38 Le 20/11/2018, à 12:31

pingouinux

Re : Lecture fichier Csv

@sylpard :
J'ai bien reçu ton message de 11h53.

Quand en #32, je te disais "Après la boucle", ce n'est pas après la ligne

        if boucle > 4:

mais après le bloc commençant par

    for row in reader:

Édité : Pour préciser un peu

    cumul=[] # Liste vide
    ..................................................
    for row in reader:
            ..........................................
            writer.writerow(["HOST","ADD", serveur, row[1].replace("'", "")])
            cumul.append(["HOST","APPLYTPL", serveur]) # Cumul des lignes à sortir ultérieurement
            ..........................................
  # On écrit maintenant tout ce qu'on a cumulé
    for ligne in cumul: writer.writerow(ligne)

Dernière modification par pingouinux (Le 20/11/2018, à 13:40)

Hors ligne

#39 Le 20/11/2018, à 15:34

bipede

Re : Lecture fichier Csv

pingouinux a écrit :

@bipede #35 :
Ça paraît peut-être plus compliqué, mais je ne récupère que les 3 caractères situés juste avant la partie numérique.
Si par exemple nom vaut helasldb02, ta méthode en #26 va récupérer las et non ldb.

Bien vu...


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#40 Le 21/11/2018, à 06:37

grim7reaper

Re : Lecture fichier Csv

Salut sylpard,

Je pense que pour aider les gens qui souhaitent t’aider ça serait pas mal de faire un message qui résume ton besoin, parce que là c’est fourni au compte-gouttes à travers plusieurs messages et c’est difficile à suivre (personnellement j’aimerai bien essayer de t’aider, mais je n’arrive pas à comprendre le comportement voulu).

Un bon début serait de fournir:
- un exemple de fichier d’entrée (avec des fausses données si besoin)
- un exemple de fichier de sortie voulu, correspondant au fichier d’entrée
- les paramètres que prends ton programmes (ce qui n’est pas codé en dur donc)
- une liste des contraintes supplémentaires (commencer la lecture à la 2e lignes, etc.)

Si tu pouvais fournir ça, je pense que ça aiderait beaucoup les participants de la discussion wink

Hors ligne

#41 Le 22/11/2018, à 08:16

sylpard

Re : Lecture fichier Csv

Bonjour,

alors pour reprendre,
concernant la seconde méthode de pingouinux

j'ai fait ceci

import sys
import csv
import glob
import os
import re

typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}
repertoire='export'
fic=glob.glob('*.csv')[0]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join(typ[suffix],row0), row[1].replace("'", "")])
csvFile.close()

et j' ai le message d' erreur suivant :  TypeError:join() takes exactly one argument (2 given)

Dernière modification par sylpard (Le 22/11/2018, à 08:16)

Hors ligne

#42 Le 22/11/2018, à 08:36

pingouinux

Re : Lecture fichier Csv

et j' ai le message d' erreur suivant :  TypeError:join() takes exactly one argument (2 given)

Ah oui, je me suis trompé. C'est :

            writer.writerow(["HOST","ADD", '-'.join((typ[suffix],row0)), row[1].replace("'", "")])

Hors ligne

#43 Le 22/11/2018, à 08:47

sylpard

Re : Lecture fichier Csv

ok ca fonctionne !

pour continuer  sur mon fichier de sortie  suivant :

HG;ADD;ACCTE
HOST;ADD;pdacctelas01;10.xxx.16.45
HOST;ADD;pdacctelht01;10.xxx.11.42
HOST;ADD;pdaccteldb02;10.xxx.16.46
HOST;ADD;pdacctelht02;10.xxx.11.48
HOST;ADD;pdacctelas03;10.xxx.16.47
HOST;ADD;pdaccteldb03;10.xxx.11.255
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HOST;APPLY;Ap-pdacctelht03

j'ai fait ceci

import sys
import csv
import glob
import os
import re

typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}
repertoire='export'
fic=glob.glob('*.csv')[0]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    cumul=[]
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join((typ[suffix],row0)), row[1].replace("'", "")])
            cumul.append(["HOST","APPLY", '-'.join((typ[suffix],row0))])
            for ligne in cumul: writer.writerow(ligne)
csvFile.close()

mais j' ai ce résultat ....

HG;ADD;ACCTE
HOST;ADD;Tomc-pdacctelas01;10.xxx.16.45
HOST;APPLY;Tomc-pdacctelas01
HOST;ADD;Ap-pdacctelht01;10.xxx.11.42
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;ADD;Tomc-pdacctelas02;10.xxx.16.46
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;ADD;Ap-pdacctelht02;10.xxx.11.48
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;ADD;Tomc-pdacctelas03;10.xxx.16.47
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HOST;ADD;Ap-pdacctelht03;10.xxx.11.255
HOST;APPLY;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HOST;APPLY;Ap-pdacctelht03

Probléme réglé ..... je sui décidement une quiche big_smile

import sys
import csv
import glob
import os
import re

typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}
repertoire='export'
fic=glob.glob('*.csv')[0]
cumul=[]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join((typ[suffix],row0)), row[1].replace("'", "")])
            cumul.append(["HOST","APPLY", '-'.join((typ[suffix],row0))])
    for ligne in cumul: writer.writerow(ligne)
csvFile.close()

Dernière modification par sylpard (Le 22/11/2018, à 09:06)

Hors ligne

#44 Le 22/11/2018, à 09:01

sylpard

Re : Lecture fichier Csv

Pour répondre à grim7reaper

grim7reaper  a écrit :

Salut sylpard,

Je pense que pour aider les gens qui souhaitent t’aider ça serait pas mal de faire un message qui résume ton besoin, parce que là c’est fourni au compte-gouttes à travers plusieurs messages et c’est difficile à suivre (personnellement j’aimerai bien essayer de t’aider, mais je n’arrive pas à comprendre le comportement voulu).

Un bon début serait de fournir:
- un exemple de fichier d’entrée (avec des fausses données si besoin)
- un exemple de fichier de sortie voulu, correspondant au fichier d’entrée
- les paramètres que prends ton programmes (ce qui n’est pas codé en dur donc)
- une liste des contraintes supplémentaires (commencer la lecture à la 2e lignes, etc.)

Si tu pouvais fournir ça, je pense que ça aiderait beaucoup les participants de la discussion wink

Merci pour ton message, le soucis c'est que je débute en python et j'essai de lire et de traiter un fichier csv en ajoutant aux données lues des commandes dans le fichier de sortie .
mes idées et mes écris ne sont pas toujours clairs, j' en suis conscient mais j' essai de préciser au mieux avec les maigres connaissances que j'ai .

Hors ligne

#45 Le 22/11/2018, à 09:06

pingouinux

Re : Lecture fichier Csv

Comme je te l'ai dit en #32, et montré en #38, l'impression des lignes de cumul doit se faire en dehors de la boucle for row...

.........................................................................;
    for row in reader:
        boucle += 1
        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join((typ[suffix],row0)), row[1].replace("'", "")])
            cumul.append(["HOST","APPLY", '-'.join((typ[suffix],row0))])
#           for ligne in cumul: writer.writerow(ligne)     # Dans la boucle for
    for ligne in cumul: writer.writerow(ligne)     # En dehors de la boucle for
.........................................................................;

Hors ligne

#46 Le 22/11/2018, à 09:08

sylpard

Re : Lecture fichier Csv

oui.... je m'en suis rendu compte branchant deux neurones de + lol

Hors ligne

#47 Le 22/11/2018, à 09:12

sylpard

Re : Lecture fichier Csv

et donc dans le cas ou je dois ajouter un autre bloc en bout il faut que j' utilise la même méthode

cumult=[]

?

HC;ADDMEMBER;All-hosts;Bdd-pgsql-extranet-pdzd_pdextranetldb71|Bdd-nas-extranet-pdzd_pdextranetldn71|Tomc-extranet-pdzd_pdextranetlas71|Ap-extranet-pdzd_pdextranetlht71|Tomc-extranet-pdzd_pdextranetlas72|Ap-extranet-pdzd_pdextranetlht72|Tomc-extranet-pdzd_pdextranetlas73|Ap-extranet-pdzd_pdextranetlht73
HC;ADDMEMBER;Serveur-de-base-de-donnees-Pgsql;Bdd-pgsql-extranet-pdzd_pdextranetldb71
HC;ADDMEMBER;Serveur-Tomcat;Tomc-extranet-pdzd_pdextranetlas71
HC;ADDMEMBER;Serveur-Apache;Ap-extranet-pdzd_pdextranetlht71
HC;ADDMEMBER;Serveur-Tomcat;Tomc-extranet-pdzd_pdextranetlas72
HC;ADDMEMBER;Serveur-Apache;Ap-extranet-pdzd_pdextranetlht72
HC;ADDMEMBER;Serveur-Tomcat;Tomc-extranet-pdzd_pdextranetlas73
HC;ADDMEMBER;Serveur-Apache;Ap-extranet-pdzd_pdextranetlht73

Hors ligne

#48 Le 22/11/2018, à 09:27

sylpard

Re : Lecture fichier Csv

import sys
import csv
import glob
import os
import re

typ={'las':'Tomc', 'lht':'Ap', 'ldb':'Bdd'}
repertoire='export'
fic=glob.glob('*.csv')[0]
cumul=[]
with open(fic) as csvFile, open(os.path.join(repertoire,"result.csv"), "w") as resultfile:
    racine=repr(csvFile).split("'")[1].replace('.csv','')
    reader = csv.reader(csvFile)
    writer = csv.writer(resultfile, lineterminator = "\n", delimiter=";")
    writer.writerow(["HG","ADD", racine])
    boucle = 0
    for row in reader:
        boucle += 1
        if boucle > 4:
            row0=row[0].strip("'")
            suffix=re.sub('\d+$','',row0)[-3:]
            writer.writerow(["HOST","ADD", '-'.join((typ[suffix],row0)), row[1].replace("'", "")])
            cumul.append(["HOST","APPLY", '-'.join((typ[suffix],row0))])
            cumul.append(["HC","ADDMEMBER", '-'.join((typ[suffix],row0))])
    for ligne in cumul: writer.writerow(ligne)

csvFile.close()

mais je ne comprends pas le principe car je me retrouve avec ce resultalt :

HG;ADD;ACCTE
HOST;ADD;Tomc-pdacctelas01;10.xxx.16.45
HOST;ADD;Ap-pdacctelht01;10.xxx.11.42
HOST;ADD;Tomc-pdacctelas02;10.xxx.16.46
HOST;ADD;Ap-pdacctelht02;10.xxx.11.48
HOST;ADD;Tomc-pdacctelas03;10.xxx.16.47
HOST;ADD;Ap-pdacctelht03;10.xxx.11.255
HOST;APPLY;Tomc-pdacctelas01
HC;ADDMEMBER;Tomc-pdacctelas01
HOST;APPLY;Ap-pdacctelht01
HC;ADDMEMBER;Ap-pdacctelht01
HOST;APPLY;Tomc-pdacctelas02
HC;ADDMEMBER;Tomc-pdacctelas02
HOST;APPLY;Ap-pdacctelht02
HC;ADDMEMBER;Ap-pdacctelht02
HOST;APPLY;Tomc-pdacctelas03
HC;ADDMEMBER;Tomc-pdacctelas03
HOST;APPLY;Ap-pdacctelht03
HC;ADDMEMBER;Ap-pdacctelht0

Hors ligne

#49 Le 22/11/2018, à 09:58

pingouinux

Re : Lecture fichier Csv

C'est normal, tu remplis cumul en alternant les valeurs. Tu récupères donc la même chose en sortie.
Il faut utiliser une seconde variable pour le second bloc.

Hors ligne

#50 Le 22/11/2018, à 11:26

sylpard

Re : Lecture fichier Csv

ok Super ça fonctionne !!! Merci wink

Hors ligne