前几天些的一个查网站是否设置了我们的mx记录的脚步,用了些数据的collection:array 和 dictionary
#!/usr/bin/python
# using below SQL query on imht_ui DB
# select accounts.id, accounts.accountname,account_domains.domain_id, domains.domainname from accounts,domains, account_domains where accounts.id=account_domains.account_id and\
domains.id=account_domains.domain_id;
import DNS
alldata='/root/SEG/EMEA_account_domain_MX_analysis/alldomains.dat'
prefilterdata='/root/SEG/EMEA_account_domain_MX_analysis/prefilter.dat'
subfix='trendmicro.eu'
status0=0
status1=1
status2=2
# Get all prefilter Accounts into an array
fpre=open(prefilterdata)
prefilterAccounts={}
for line in fpre:
prefilterAccounts[str.split(line)[1]]={}
#print prefilterAccounts
fall=open(alldata)
for line in fall:
account=str.split(line)[3]
domain=str.split(line)[7]
if account in prefilterAccounts:
prefilterAccounts[account][domain]=[]
#print prefilterAccounts
#DNS.DiscoverNameServers()
#reqobj=DNS.Request()
DNS.DiscoverNameServers()
reqobj=DNS.Request()
domainStatus={}
#!/usr/bin/python
# using below SQL query on imht_ui DB
# select accounts.id, accounts.accountname,account_domains.domain_id, domains.domainname from accounts,domains, account_domains where accounts.id=account_domains.account_id and\
domains.id=account_domains.domain_id;
import DNS
alldata='/root/SEG/EMEA_account_domain_MX_analysis/alldomains.dat'
prefilterdata='/root/SEG/EMEA_account_domain_MX_analysis/prefilter.dat'
subfix='trendmicro.eu'
status0=0
status1=1
status2=2
# Get all prefilter Accounts into an array
fpre=open(prefilterdata)
prefilterAccounts={}
for line in fpre:
prefilterAccounts[str.split(line)[1]]={}
#print prefilterAccounts
fall=open(alldata)
for line in fall:
account=str.split(line)[3]
domain=str.split(line)[7]
if account in prefilterAccounts:
prefilterAccounts[account][domain]=[]
#print prefilterAccounts
#DNS.DiscoverNameServers()
#reqobj=DNS.Request()
DNS.DiscoverNameServers()
reqobj=DNS.Request()
domainStatus={}
1. 列表List
列表是元素的有序集合,列表元素由逗号分隔,方括号括起,列表中可以放任意对象(包括列表对象),列表是可变的可以添加和删除元素。
每个列表都是list类对象。可以通过help(list)查看列表所有属性和方法。
定义列表 shoplist=['apple', 'mango', 'carrot', 'banana']
添加元素 shoplist.append('rice') //添加元素后shoplist=['apple', 'mango', 'carrot', 'banana','rice']
删除元素 del shoplist[0] //删除第一个元素
获取元素 shoplist[1] //获取第二个元素'mango'
遍历所有元素 for item in shoplist
排序 shoplist.sort()
长度 len(shoplist)
2. 元组Tuple
元组与列表类似,也是有序元素的集合,元组元素由逗号分隔,圆括号括起,圆括号不是必须的,元组中可以放任意对象(包括元组对象),元组是不可变的。每个元组都是tuple类对象。可以通过help(tuple)查看元组所有属性和方法。
定义元组 zoo = ('python', 'elephant', 'penguin') 或 zoo = 'python', 'elephant', 'penguin'
获取元素 zoo[1] // 获取第二个元素'elephant'
遍历所有元素 for item in zoo
长度 len(zoo) // 3
特殊元组
(1)空元组 ()
(2)一个元素的元组 (item,),逗号必须要,与(item)表达式进行区分
3. 字典Dictionary
类似Java中的Hash,每一个元素都是一个key:value对,其中key必须是唯一且不可变对象,如strings。每个字典都是dict类对象。
定义字典 ab = {'Swaroop' : 'swaroop@swroopch.com', 'Larry' : 'larray@wall.org'}
获取元素 ab['Swaroop'] // 获取'swaroop@swroopch.com'
添加元素 ab['Guido']='guido@swroopch.com'
删除元素 del ab['Larry']
遍历元素
for name, address in ab.items():
print('Contact {0} at {1}'.format(name, address))
序列
列表、元组和字符串都是序列。序列的主要特征是拥有检测是否含有某元素的方法(及in和not in表达式)和索引操作。如
1. 列表
alist=['a', 'b', 'c']
'a' in alist //True
alist[1] // 获取'b'元素
2. 元组
atuple=('a', 'b', 'c')
'a' in atuple//True
atuple[1] // 获取'b'元素
3. 字符串
astr='abc'
'a' in astr //True
astr[1] // 获取'b'
索引可以是负数表示倒数第一个元素
如alist[-1] 表示倒数第一个元素'c'
切片操作
可以对序列做切片操作,获取序列的一部分,切片操作与索引操作类似,由冒号(:)分隔0到3个数[start:end:step],第一个表示起始位置,第二个数表示终止位置(不包括该位置元素),第三个数为步长。第一个数没有则默认为0,第二个数没有则默认为序列长度,第三个数没有则默认为1。如
alist = [1, 2, 3, 4]
alist[2:3] = [3]
alist[2:]=[3,4]
alist[:3]=[1,2,3]
alist[1::2]=[2,4]
注意:
1. 列表的切片仍是列表,即使只有一个元素,其他类似。
2. 可以通过alist[:]复制alist列表
集合
集合是简单对象的无序集合。集合具有in,issubset,issuperset,intersection等操作,具体方法及属性可以查看help(set)。
1. 集合定义:
aset=set(['a','b'])
bset={'b','c'}
2. in操作:
'a' in aset // True
3. issuperset操作:
aset.issuperset(bset) // False
aset.issuperset({'a'}) // True
4. intersection操作:
aset.intersection(bset) 等价于 aset & bset // {'b'}