3つ目のファイルを作成するために2つのファイルを比較する効率的な方法を見つけるのに少し問題があります。IPを含む2つのファイルをPythonと比較する
私は、最初のファイルは、私が削除したいIPアドレスのリストであるPythonの3.6に
を使用しています。 2番目のファイルには、削除対象のIPアドレスに関連付けられているすべてのDNSレコードが含まれています。
2番目のファイルにDNSレコードがある場合は、3番目のファイルに行全体を追加します。これは私がやろうとしているものです
DNS Record Type,DNS Record,DNS Response,View
PTR,10.10.10.234,testing.example.com,internal
A,testing.example.com,10.10.10.234,internal
A,dns.google.com,8.8.8.8,external
:
IP
10.10.10.234
10.34.76.4
これは、ファイル2のサンプルは次のとおりです。
これは、ファイル1のサンプルです。それは正確ですが、それは永遠に取っています。ファイル2には200万行、ファイル1には150,000行があります。
def create_final_stale_ip_file():
PD = set()
with open(stale_file) as f1:
reader1 = csv.DictReader(f1)
for row1 in reader1:
with open(prod_dns) as f2:
reader2 = csv.DictReader(f2)
for row2 in reader2:
if row2['DNS Record Type'] == 'A':
if row1['IP'] == row2['DNS Response']:
PD.update([row2['View']+'del,'+row2['DNS Record Type']+','+row2['DNS Record']+','+row2['DNS Response']])
if row2['DNS Record Type'] == 'PTR':
if row1['IP'] == row2['DNS Record']:
PD.update([row2['View']+'del,'+row2['DNS Record Type']+','+row2['DNS Response']+','+row2['DNS Record']])
o1 = open(delete_file,'a')
for i in PD:
o1.write(i+'\n')
o1.close()
ありがとうございます!
grep -xf file1 file2
をこれはあなたにfile1
の行と一致するfile2
の行を含むファイルを提供します:
ワイルドカード、ネットマスク、またはサブネットがないため、'10 .34.76。* 'または'10 .34。*。*'を処理する必要はありません。すべてのIPアドレスはリテラル文字列です。 (なぜこのタグが付いていますか?(タグ:サブネット)?) – smci
関連:[サブネットがIP範囲内にあるかどうかは、Pythonで比較しますか?](http://stackoverflow.com/questions/22362894/compare-if-subnet-is-in -ip-range-in-python?rq = 1) – smci