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()
3 Réponses :
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()
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 . P>
Vous pourrez facilement charger vos 2 fichiers avec lis_csv code> et extraire facilement des colonnes à l'aide de la ["" Columin_name "] Code> Opérateur. P>
Vous pouvez utiliser la bibliothèque Supposons que File1 em> est le fichier contenant une adresse IP et un nom d'hôte et l'autre fichier est File2 em>. De plus, je suppose que les deux fichiers sont composés comme: p> donc, j'ai lu les fichiers CSV: p> maintenant , deux objets juste un indice: vous pouvez accéder aux valeurs IP à l'aide de une alternative consiste à utiliser la fonction en particulier, la fonction dataframe code> ont été créés. Vous iTEREZ le df1 code> sur df2 code> et si le ip code> du df1 code> est égal au ip < / Code> du DF2 code>, vous pouvez faire ce que vous voulez. p> df1 ['IP'] < / code>! p> où code> de la bibliothèque em> numpy em> ou la fonction Fusionner code> de la bibliothèque pandas em>. P> fusion code> est utile si vous souhaitez vérifier les valeurs d'une certaine colonne. Vous fusionnerez les deux dataframes (dans votre cas df1 code> et df2 code>) dans un nouveau Dataframe ( df3 code>): p>
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)