0
votes

Comparez deux formats différents fichiers CSV avec Python

J'ai besoin de comparer deux formats différents fichiers CSV, le premier fichier contient une nom d'hôte et une adresse IP et le deuxième fichier contient une nom d'hôte, une adresse IP, un type de système d'exploitation et une heure de disponibilité. L'objectif est de prendre le nom d'hôte du premier fichier et de le comparer avec le nom d'hôte à partir du deuxième fichier et si OK, le code me donne le type de système d'exploitation et la disponibilité. Ceci est mon premier test de code.

import sys

# f = sys.stdin
# If you need to open a file instead:
f_vm_srv = open('serveurs.csv')
f_srv_list =  open('fqdn-ip.txt')

for line1 in f_srv_list:
    hostname=line1.strip().split(";")
    for line in f_vm_srv:
        fields = line.strip().split(";")
        if fields[0] == hostname[0]:
            print (fields[12])

f_vm_srv.close()
f_srv_list.close()


1 commentaires

Tout d'abord lire toutes les lignes au moins pour la boucle intérieure car elle ne lira plus les lignes de fichier lors de la fin du fichier (cela signifie que lorsque vous exécutez une deuxième boucle intérieure)


3 Réponses :


2
votes

Essayez de changer votre code pour être:

import sys

# f = sys.stdin
# If you need to open a file instead:
f_vm_srv = open('serveurs.csv')
f_srv_list =  open('fqdn-ip.txt')

# read in the lines from the file
f_svr_list_lines = f_srv_list.readlines()
f_vm_srv_lines = f_vm_srv.readlines()

for line1 in f_svr_list_lines:
    hostname=line1.strip().split(";")
    for line in f_vm_srv_lines:
        fields = line.strip().split(";")
        if fields[0] == hostname[0]:
            print (fields[12])

f_vm_srv.close()
f_srv_list.close()


0 commentaires

0
votes

Si vous allez devoir travailler beaucoup avec CSV dans Python et que vous devez effectuer des opérations complexes, alors je vous conseille fortement de vous familiariser avec Pandas .

Vous pourrez facilement charger vos 2 fichiers avec lis_csv et extraire facilement des colonnes à l'aide de la ["" Columin_name "] Opérateur.


0 commentaires

0
votes

Vous pouvez utiliser la bibliothèque pandas , utile pour lire CSV.

Supposons que File1 est le fichier contenant une adresse IP et un nom d'hôte et l'autre fichier est File2 . De plus, je suppose que les deux fichiers sont composés comme: xxx

donc, j'ai lu les fichiers CSV: xxx

maintenant , deux objets dataframe ont été créés. Vous iTEREZ le df1 sur df2 et si le ip du df1 est égal au ip < / Code> du DF2 , vous pouvez faire ce que vous voulez.

juste un indice: vous pouvez accéder aux valeurs IP à l'aide de df1 ['IP'] < / code>! xxx

une alternative consiste à utiliser la fonction de la bibliothèque numpy ou la fonction Fusionner de la bibliothèque pandas .

en particulier, la fonction fusion est utile si vous souhaitez vérifier les valeurs d'une certaine colonne. Vous fusionnerez les deux dataframes (dans votre cas df1 et df2 ) dans un nouveau Dataframe ( df3 ): xxx


0 commentaires