デバイスマネージャ "Master-EDR-List.txt"から配信スイッチのリストを取得するスクリプトがあります。その後、別のサーバー "New-EDR-List.txt"から別のtxtファイルを取得します。新しいリストにマスターリストがない追加のEDRがあるまで、マスターリストはかなり静的です。2ファイルの比較テキストと比較の問題を解決する方法
私はこれらの2つのファイルを比較し、新しいリストにあり、マスターリストにないEDRを保存したいと思います。私は比較スクリプトを書いたが、それは信頼できない。私は新しいリストにいくつかの追加のテストEDRを追加しました。リストに置いた場所に基づいて予期せぬ結果を得ています。私はいつも新しいものを手に入れることができますが、両方のリストにあるEDRを取得することもあります。また、新しいEDRを両方とも同じ行にスペースを入れずに取得することもあります。ここで
は私のコードです:
マスターリスト:
rts41d-an28edr1.rt.tst.com
rts41d-an28edr2.rt.tst.com
rts41d-an32edr1.rt.tst.com
rts41d-an32edr2.rt.tst.com
rts41d-as19edr1.rt.tst.com
rts41d-as19edr2.rt.tst.com
rts41d-as21edr1.rt.tst.com
rts41d-as21edr2.rt.tst.com
rts12a-ah46edr2.rt.tst.com
rts12a-al46edr2.rt.tst.com
rts12a-as46edr1.rt.tst.com
rts12a-as46edr2.rt.tst.com
rts12a-as46edr2.rt.tst.com
rts12a-aw46edr1.rt.tst.com
rts12a-aw46edr2.rt.tst.com
rts12a-aw46edr2.rt.tst.com
rts12b-as46edr1.rt.tst.com
rts12b-ax46edr1.rt.tst.com
新規一覧:
rts41d-an28edr1.rt.tst.com
rts41d-an28edr2.rt.tst.com
rts41d-an32edr1.rt.tst.com
rts41d-an32edr2.rt.tst.com
rts41d-as19edr1.rt.tst.com
rts41d-as19edr2.rt.tst.com
rt511-sps5.rt.tst.com
rts41d-as21edr1.rt.tst.com
rts41d-as21edr2.rt.tst.com
rts12a-ah46edr2.rt.tst.com
rts12a-al46edr2.rt.tst.com
rts12a-as46edr1.rt.tst.com
rts12a-as46edr2.rt.tst.com
rt511-sps6.rt.tst.com
rts12a-as46edr2.rt.tst.com
rts12a-aw46edr1.rt.tst.com
rts12a-aw46edr2.rt.tst.com
rts12a-aw46edr2.rt.tst.com
rts12b-as46edr1.rt.tst.com
rts12b-ax46edr1.rt.tst.com
rt511-sps7.rt.tst.com
ここ
old_lines = set((line.strip() for line in open('Master-EDR-List.txt', 'r+')))
file_new = open('New-EDR-List.txt', 'r+')
#file_diff = open('file_diff.txt', 'w')
#Open Master File
with open('Master-EDR-List.txt', 'r') as f:
d = set(f.readlines())
#Open New File
with open('New-EDR-List.txt', 'r') as f:
e = set(f.readlines())
#Open Diff files to store differences
open('file_diff.txt','w').close()
with open('file_diff.txt', 'a') as f:
for line in list(e - d):
f.write(line)
は、私がテスト用に使用しています私のリストです私は2つのテストrt511を追加しました
差分ファイル:
rt511-sps7.rt.tst.comrt511-sps5.rt.tst.com
rt511-sps6.rt.tst.com
rts12b-ax46edr1.rt.tst.com
あなたが見ることができるように、SPS7と5されている-sps5、6、リスト7とだけではなく、これらの3項目を取得し、私は私の差分ファイルでこれを取得しています何らかの理由で同じ行にあり、 "rts12b-ax46edr1"はすでに両方のファイルに存在しているので、そこにはいけません。
これがなぜ起こっているのか、どのように修正できるのか誰にも分かりますか?新しいリストは、新しい配布スイッチを発見し、その名前に応じてリストのどこにでも置くことができます。このスクリプトでは、マスターにはない新しいEDRがリストに表示されるようにしたいと思います。
ありがとうございました
最初の行を修正して別のファイルに追加しましたが、まだ同じ出力が表示されています。 rts12b-ax46edr1.rt.tst.comは、両方のファイルに存在していてもまだリストにあります。私はなぜこれを行うのか分からない。 – Neo
私はこの問題を発見したと思う。私はループをデバッグし、最後のものに達するまですべての繰り返しを行った。それは何をしているのですか? NewLine = 'rts12b-ax46edr1.rt.tst.com \ n "old_line =" rts12b-ax46edr1.rt.tst.com "マスターファイルでは最後の項目なので、" \ n "は最後に "\ n"を削除して、代わりに名前を使用することができますか? – Neo
@Neoあなたの要件に応じて動作するはずのコードを変更しました。 。 –