使用的时候,数据库里都是封禁的
今天完善了一下这两个文件自己创建一下
txt只要名字对就行
import csv
from tkinter import *
from tkinter import ttk
from tkinter.messagebox import showinfo, askyesno
# 创建CSV库
def create_csv():
try:
with open('ip_database.csv', 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['IP'])
result_text.insert(END, "CSV 数据库创建成功!\n")
except PermissionError:
result_text.insert(END, "权限被拒绝:创建CSV数据库失败\n")
# 从文件中读取IP列表并查询
def read_ip_list():
ip_list = []
try:
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)
result_text.insert(END, "IP列表处理成功!\n")
except FileNotFoundError:
result_text.insert(END, "找不到文件(ip_list.txt): 读取IP列表失败.请创建\n")
except PermissionError:
result_text.insert(END, "拒绝权限:读取IP列表失败.\n")
# 查询IP是否存在于库中
def search_ip(ip):
try:
with open('ip_database.csv', 'r') as file:
reader = csv.reader(file)
next(reader) # 跳过标题行
for row in reader:
if row[0] == ip:
return True
return False
except FileNotFoundError:
result_text.insert(END, "文件未找到:搜索IP失败.\n")
except PermissionError:
result_text.insert(END, "拒绝权限: 搜索IP失败.\n")
# 存储IP列表到库中
def store_ip_list(ip_list):
try:
with open('ip_database.csv', 'a', newline='') as file:
writer = csv.writer(file)
for ip in ip_list:
writer.writerow([ip])
result_text.insert(END, ip+"\n")
result_text.insert(END, "未存在列表已添加!\n")
result_text.insert(END, "列表处理!\n")
except PermissionError:
result_text.insert(END, "拒绝许可:存储IP列表失败.\n")
# 单个IP查询
def search_single_ip():
ip = entry.get()
if search_ip(ip):
result_text.insert(END, f"IP {ip} 已存在\n")
else:
result_text.insert(END, f"IP {ip} 不在\n")
# 添加单个IP到数据库
def add_single_ip():
ip = entry.get()
if not search_ip(ip):
try:
with open('ip_database.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([ip])
result_text.insert(END, f"IP {ip} 已添加到数据库\n")
except PermissionError:
result_text.insert(END, "拒绝权限: 添加IP失败.\n")
else:
showinfo("Error", f"IP {ip} 已存在于数据库中")
# 删除单个IP
def delete_single_ip():
ip = entry.get()
if search_ip(ip):
confirmation = askyesno("Confirmation", f"您确定要删除{ip}?")
if confirmation:
try:
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)
result_text.insert(END, f"IP {ip} 已从数据库中删除.\n")
except FileNotFoundError:
result_text.insert(END, "文件未找到: 删除IP失败.\n")
except PermissionError:
result_text.insert(END, "拒绝权限:删除IP失败.\n")
else:
showinfo("Error", f"IP {ip} 数据库中不存在")
# 创建图形化界面
window = Tk()
window.title("IP 去重 工具")
window.geometry("800x800")
# 创建标题标签
title_label = ttk.Label(window, text="IP 去重 工具", font=("Helvetica", 16))
title_label.pack(pady=10)
# 创建按钮框架
button_frame = Frame(window)
button_frame.pack(pady=10)
# 创建数据库按钮
#create_button = ttk.Button(button_frame, text="Create CSV Database", command=create_csv)
#create_button.grid(row=0, column=0, padx=5)
read_button = ttk.Button(button_frame, text="读取ip_list.txt文件查询", 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)
add_button = ttk.Button(input_frame, text="添加到数据库", command=add_single_ip)
add_button.grid(row=0, column=3, padx=5)
# 创建结果文本框
result_text = Text(window, height=80, width=60)
result_text.pack(pady=100)
window.mainloop()