护网IP去重,去白名单

import csv

from tkinter import *

from tkinter import ttk

from tkinter.messagebox import showinfo, askyesno

从文件中读取IP列表并查询

def read_ip_list():

ip_list = \[\]

with open('ip_list.txt', 'r') as file:

for line in file:

ip = line.strip()

if not search_ip(ip):

ip_list.append(ip)

print(ip)

store_ip_list(ip_list)

showinfo("完成", "成功处理IP列表")

查询IP是否存在于库中

def search_ip(ip):

with open('ip_database.csv', 'r') as file:

reader = csv.reader(file)

for row in reader:

if row0 == ip:

return True

return False

存储IP列表到库中

def store_ip_list(ip_list):

with open('ip_database.csv', 'a', newline='') as file:

writer = csv.writer(file)

for ip in ip_list:

writer.writerow(ip)

单个IP查询

def search_single_ip():

ip = entry.get()

if search_ip(ip):

showinfo("Result", f"IP {ip} exists in the database")

else:

showinfo("Result", f"IP {ip} does not exist in the database")

删除单个IP

def delete_single_ip():

ip = entry.get()

if search_ip(ip):

confirmation = askyesno("Confirmation", f"Are you sure you want to delete IP {ip}?")

if confirmation:

with open('ip_database.csv', 'r') as file:

lines = file.readlines()

with open('ip_database.csv', 'w') as file:

for line in lines:

if line.strip() != ip:

file.write(line)

showinfo("Success", f"IP {ip} has been deleted from the database")

else:

showinfo("Error", f"IP {ip} does not exist in the database")

创建图形化界面

window = Tk()

window.title("IP去重工具")

window.geometry("500x400")

创建标题标签

title_label = ttk.Label(window, text="IP去重工具", font=("Helvetica", 16))

title_label.pack(pady=10)

创建按钮框架

button_frame = Frame(window)

button_frame.pack(pady=10)

read_button = ttk.Button(button_frame, text="读取IP列表", command=read_ip_list)

read_button.grid(row=0, column=1, padx=5)

创建输入框和按钮框架

input_frame = Frame(window)

input_frame.pack(pady=10)

entry = ttk.Entry(input_frame)

entry.grid(row=0, column=0, padx=5)

search_button = ttk.Button(input_frame, text="单个查询IP", command=search_single_ip)

search_button.grid(row=0, column=1, padx=5)

delete_button = ttk.Button(input_frame, text="删除单个IP", command=delete_single_ip)

delete_button.grid(row=0, column=2, padx=5)

创建状态标签

status_label = ttk.Label(window, text="")

status_label.pack(pady=10)

window.mainloop()

相关推荐
程序喵大人15 小时前
【C++进阶】STL算法与函数对象 - 04 find、count和any_of把查询写成意图
开发语言·c++·算法
Livia要学习16 小时前
Python装饰器
开发语言·python
一直都在57216 小时前
LangChain4j精讲
开发语言·人工智能
吹什么轩16 小时前
c++复习:c++11:lambda表达式
开发语言·c++
IvorySQL16 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
不会代码的小猴16 小时前
标准模板库(STL)
开发语言·c++·笔记·算法
油丶酸萝卜别吃16 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo809716 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat16 小时前
MySQL回表机制解析与优化策略
数据库·sql