2017-09-13 4 views
0

J'essaie actuellement de comprendre comment créer un fichier CSV en python, qui listera tous les fichiers de la catégorie/logs avec le nom du serveur par SSH. Le problème est, à chaque fois que je commence mon script, je reçois quelque chose comme:Création de fichier CSV en python qui listera tous les fichiers d'un répertoire avec un nom de serveur aux côtés de

server, machine 
IP;file1 file2, file3 file4 etc 
IP2;file1 file2, file3, file 4 etc. 

Lorsque dans mon CSV je besoin de quelque chose comme ceci:

server, machine 
IP;file1 
IP;file2 
Ip;file3 
IP;file4 
IP2;file1 
IP2;file2 
IP2;file3 
etc... 

Avec mon code actuel je ne suis pas sûr de savoir comment commencer par ce problème le fragment concerné ressemble à ceci:

SLIST = path to csv from which i took IP 
CMD2 = 'ssh %s ls /opt/syslog/logs' 

def mloop(): 
    f = open('out.csv', 'a') 
    columnTitleRow = "server, machine\n" 
    f.write(columnTitleRow) 

    for i in csv2hash(SLIST): 


     if i.get('IP'): 
      r = getoutput(CMD2 % (i['IP'])) 

     server = i['IP'] 
     machine = r 
     row = server + ";" + machine + ";" + "\n" 
     f.write(row) 
    f.close() 

et comme vous pouvez le voir ... « r » obtient tous les fichiers du dossier journaux, le problème est je n'ai aucune idée comment mettre chaque fichier séparément à csv.

Répondre

0

Utiliser python bibliothèque en construction csv

import csv 

output_file = open('outputfile.csv', 'wb') 
fieldnames = ['server', 'machine'] 
writer = csv.DictWriter(output_file, fieldnames=fieldnames) 
writer.writeheader() 

def mloop(): 
    ... 
    ... 
    server = i['IP'] 
    machine = r 
    row = {'server': server, 'machine': machine} 
    writer.writerow(row) 

output_file.close() 

En savoir plus sur Python csv

+0

Eh bien, il est une bonne façon de les énumérer mais il ne reste le même que mon code. Ce qui est essentiellement: IP1: fichier1 fichier2 file3 fichier4 etc ... Alors que je dois les fichiers itérer et ne csv comme: IP1: fichier1 IP1: fichier2 IP1: file3 – Sever

+0

@sever Je n » T-tu ton problème? –

+0

Oui, parce que maintenant la sortie que je reçois est: 'server; machine' ' 10.10.10.10; file1file2file3file4file5file5file6file7' '10.10.10.11; file1file2file3file4file5 ...' mais je veux le faire comme ceci: ' serveur, machine 10.10.10.10; fichier1 10.10.10.10; fichier2 10.10.10.10; file3' – Sever