正确使用csv阅读器功能

时间:2017-03-26 13:22:25

标签: python

当我在底部附近使用我的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

1 个答案:

答案 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)