实现对IP去重并统计A、B、C段的个数

1.程序制作原因:

        需要对IP文件进行IP去重和A、B、C段统计

2.最终效果图:

        

3.完整代码如下(count_A_B_C.py): 

import os
import PySimpleGUI as sg


def count_d(iplist):
    # print(iplist)
    iplist = set(iplist)
    # print(iplist)
    return len(iplist)


def count_c(iplist):
    # print(iplist)
    c_list = []
    for ip in iplist:
        ip_arry = ip.split('.')
        # print(ip_arry)
        ip = '%s.%s.%s' % (ip_arry[0], ip_arry[1], ip_arry[2])
        # print(ip)
        c_list.append(ip)
    # print(c_list)
    c_list = set(c_list)
    # print(c_list)

    return len(c_list)


def count_b(iplist):
    # print(iplist)
    b_list = []
    for ip in iplist:
        ip_arry = ip.split('.')
        # print(ip_arry)
        ip = '%s.%s' % (ip_arry[0], ip_arry[1])
        # print(ip)
        b_list.append(ip)
    # print(b_list)
    b_list = set(b_list)
    # print(b_list)

    return len(b_list)


def count_a(iplist):
    pass
    # print(iplist)
    a_list = []
    for ip in iplist:
        ip_arry = ip.split('.')
        # print(ip_arry)
        ip = '%s' % (ip_arry[0])
        # print(ip)
        a_list.append(ip)
    # print(a_list)
    a_list = set(a_list)
    # print(a_list)

    return len(a_list)


def read_iplist():
    iplist = []
    dir = os.getcwd()
    dir = os.path.join(dir, "ip_result.txt")

    if os.path.isfile(dir):
        with open(dir, 'r') as f:
            line = f.readline()
            while line:
                line = line.strip('\n')
                if line:
                    iplist.append(line)

                line = f.readline()
                if not line:
                    break
        #     iplist = f.readlines()
        # print(iplist)
    else:
        result = '当前目录不存在ip_result.txt文件,请创建后运行'
        sg.popup_scrolled(result, title="错误信息")
        exit()
    return iplist


if __name__ == '__main__':
    iplist = read_iplist()

    ip_d = count_d(iplist)
    # print(ip_d)

    ip_c = count_c(iplist)
    # print(ip_c)

    ip_b = count_b(iplist)
    # print(ip_b)

    ip_a = count_a(iplist)
    # print(ip_a)

    # print('A段:%s B段:%s C段:%s D段:%s' %(ip_a,ip_b,ip_c,ip_d))
    result = 'A段:%s  B段:%s  C段:%s  D段:%s' % (ip_a, ip_b, ip_c, ip_d)
    sg.popup_scrolled(result, title="IP统计结果")
    # read_iplist()

4.程序打包成exe:

(venv) D:\work\venv\Scripts>pyinstaller.exe -Fw D:\work\count_A_B_C.py

5.程序运行注意事项:

        ①ip_result.txt文件需要跟打包成的exe文件放在同一目录下

        ②ip_result.txt文件中ip一行一个

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值