我在查找比较两个文件以创建第三个文件的有效方法时遇到了一些问题。将包含IP的两个文件与Python进行比较
我使用Python 3.6
第一个文件是IP地址的列表,我想删除。第二个文件包含与该目标为删除的IP地址相关联的所有DNS记录。
如果我在第二个文件中找到DNS记录,我想将整行添加到第三个文件。
这是文件1的样品:
IP
10.10.10.234
10.34.76.4
这是文件2的样品:
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
这就是我想要做的事。这是准确的,但它是永恒的。文件2中有〜200万行,文件1中有150K行。
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()
在此先感谢!
没有通配符,网络掩码或子网,所以你不需要处理'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