当我在底部附近使用我的ip_list函数时,我创建一个变量并调用该函数,这是我期望的。
当我使用我的csv_dict_reader函数时,我无法找到将它分配给变量的方法,那么我是否使用used_ips变量来操作函数中的列表?我想将它与b变量进行比较以查找重复项。
由于
#!/usr/bin/python3
import ipaddress
import csv
used_ips = []
ips = []
def csv_dict_reader(file_obj):
reader = csv.DictReader(file_obj,delimiter=',')
for line in reader:
used_ips.append(line["ip_address"])
return used_ips
def ip_list(network_addr):
addr = ipaddress.ip_network(network_addr)
for i in addr.hosts():
ips.append([i])
return ips
def check_match(a,b):
if __name__ == "__main__":
with open("data.csv") as f_obj:
csv_dict_reader(f_obj)
b = ip_list('192.168.1.0/24')
print(b)
print(used_ips)
数据如下所示:
server,purpose,ip_address
server1,SQL,192.168.1.200
server2,web,192.168.1.210
server3,AD,192.168.1.220
答案 0 :(得分:0)
两件事。首先,将变量初始化带入它们运行的范围(并从基础范围中删除它们)。在这个特定的例子中,这不是绝对必要的,但是更好的做法。
def csv_dict_reader(file_obj):
used_ips = []
...
def ip_list(network_addr):
ips = []
...
然后,就像使用ip_list()
一样,将csv_dict_reader()
的返回值赋给变量:
with open("data.csv") as f_obj:
csv_ips = csv_dict_reader(f_obj)
print(csv_ips)