Я пытаюсь обработать CSV-файл и извлечь имена хостов и сохранить извлечение в файл с именем host_file1
, а затем сравнить этот файл с уже существующим текстовым файлом, например host_file2
, поэтому обработка csv работает нормально.
Теперь, как я уже сказал, я хочу сделать некоторое сравнение имени хоста между двумя файлами, я хочу, чтобы сопоставить имя хоста в host_file2
с host_file1
, поэтому, если имя хоста в host_file2
, но не в host_file1
печать имени хоста, не печатайте имя хоста, которое есть в обоих файлах.
Я пробовал что-то подобное ниже с set, но это просто дает разницу, а не то, что я хочу.
#!/python/v3.6.1/bin/python3
from __future__ import print_function
from signal import signal, SIGPIPE, SIG_DFL
signal(SIGPIPE,SIG_DFL)
import pandas as pd
##### Python pandas, widen output display to see more columns. ####
pd.set_option('display.height', None)
pd.set_option('display.max_rows', None)
pd.set_option('display.max_columns', None)
pd.set_option('display.width', None)
pd.set_option('expand_frame_repr', True)
##################### END OF THE Display Settings ###################
df_csv = pd.read_csv(input("Please input the CSV File Name: "), usecols=['Platform ID', 'Target system address']).dropna()
hostData = df_csv[df_csv['Platform ID'].str.startswith("CDS-Unix")]['Target system address']
hostData.to_csv('host_file1', header=None, index=None, sep=' ', mode='a')
with open('host_file1', 'r') as f:
dataset1 = set(f)
with open('host_file2', 'r') as f:
dataset2 = set(f)
for i, item in enumerate(sorted(dataset1 ^ dataset2)):
print(str(item))
# shorter
"""
with open('host_file1') as f1, open('host_file2') as f2:
dataset1 = set(f1)
dataset2 = set(f2)
"""
Два разных файла имени хоста:
host_file1
vmhost01
vmhost02
vmhost03
vmhost04
vmhost05
vmhost06
vmhost07
vmhost08
vmhost09
vmhost10
host_file2
vmhost01
vmhost02
vmhost03
vmhost04
vmhost05
vmserver01
vmhost07
vmhost08
vmserver02
vmhost10
Желаемый результат:
vmserver01
vmserver02