test / search_and_copy.py
Oosayam's picture
Upload search_and_copy.py
5551649 verified
raw
history blame contribute delete
No virus
3.23 kB
import os
import shutil
import tkinter as tk
from tkinter import filedialog, messagebox
def process_files(words, output_directory):
# 生成輸出的檔名,將逗號替換為底線
output_filename = "_".join(words) + ".txt"
# 確保檔案名稱最後不會有下劃線
if output_filename.endswith("_.txt"):
output_filename = output_filename[:-5] + ".txt"
# 如果目錄不存在,創建目錄
if not os.path.exists(output_directory):
os.makedirs(output_directory)
# 準備輸出的檔案
temp_output_filename = "temp_" + output_filename
with open(temp_output_filename, 'w', encoding='utf-8') as outfile:
# 瀏覽當前目錄下的所有檔案
for filename in os.listdir('.'):
# 只處理純文字檔案
if filename.endswith('.txt') and filename != temp_output_filename:
try:
with open(filename, 'r', encoding='utf-8') as infile:
# 處理每一行
for line in infile:
# 檢查行是否包含所有的輸入單詞
if all(word in line for word in words):
# 將符合條件的行寫入輸出檔案
outfile.write(line)
except Exception as e:
print(f"無法讀取檔案 {filename}: {e}")
# 將臨時檔案移動到目標目錄
final_output_path = os.path.join(output_directory, output_filename)
shutil.move(temp_output_filename, final_output_path)
messagebox.showinfo("完成", f"符合條件的行已寫入檔案 {final_output_path}")
def on_process():
input_words = input_entry.get()
words = [word.strip() for word in input_words.split(",")]
# 檢查單詞是否超過十個
if len(words) > 10:
messagebox.showerror("錯誤", "輸入的單詞不能超過十個")
return
output_directory = output_dir_entry.get().strip()
# 如果沒有輸入,使用預設目錄
if not output_directory:
output_directory = r"I:\sd-forge\extensions\sd-dynamic-prompts\wildcards"
process_files(words, output_directory)
def browse_directory():
directory = filedialog.askdirectory()
if directory:
output_dir_entry.delete(0, tk.END)
output_dir_entry.insert(0, directory)
# 創建主窗口
root = tk.Tk()
root.title("詞彙檢測工具")
# 輸入詞彙框
tk.Label(root, text="請輸入一組單詞(最多十個單詞,用逗號分隔):").pack(pady=5)
input_entry = tk.Entry(root, width=50)
input_entry.pack(pady=5)
# 輸出目錄框
tk.Label(root, text="請輸入輸出目錄(如果不存在,將會自動創建):").pack(pady=5)
output_dir_entry = tk.Entry(root, width=50)
output_dir_entry.pack(pady=5)
# 瀏覽目錄按鈕
browse_button = tk.Button(root, text="瀏覽...", command=browse_directory)
browse_button.pack(pady=5)
# 開始處理按鈕
process_button = tk.Button(root, text="開始處理", command=on_process)
process_button.pack(pady=20)
# 運行主循環
root.mainloop()