使用的时候,数据库里都是封禁的
今天完善了一下这两个文件自己创建一下

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()