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 row[0] == 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()