当前位置:首页>python>利用Python快速整理删除工程文件

利用Python快速整理删除工程文件

  • 2026-08-18 23:10:26
利用Python快速整理删除工程文件
日常工作里对接资料是常事,整理打包资料时总会遇到一个普遍痛点:整个文件夹里文档繁杂,对方往往只需要其中一部分文件,其余附件、草稿、过程版、作废图纸、多余台账全都属于冗余内容。手动逐个挑选、删除费时费力,删错还难以恢复;大批量文件修改时间戳统一规整也只能挨个右键设置,效率极低。用Python 来弄就简单多了。
# -*- coding: utf-8 -*-"""文件筛选工具 v3.0功能:  1. 按关键字筛选文件(删除包含/不包含关键字的文件)-> 回收站  2. 将文件夹中所有文件的修改日期调整为今天  3. 支持递归/非递归模式无需额外依赖,删除直接走Windows原生回收站API"""import osimport sysimport ctypesimport tracebackfrom datetime import datetimeimport tkinter as tkfrom tkinter import ttk, messagebox, filedialog# ========== Windows原生回收站API(无需send2trash)==========def send_to_recycle_bin(path):    """使用Windows shell32 API将文件/文件夹移至回收站"""    abs_path = os.path.abspath(path)    if len(abs_path) > 240:        if not abs_path.startswith('\\\\?\\'):            abs_path = '\\\\?\\' + abs_path    class SHFILEOPSTRUCTW(ctypes.Structure):        _fields_ = [            ("hwnd", ctypes.c_void_p),            ("wFunc", ctypes.c_uint),            ("pFrom", ctypes.c_wchar_p),            ("pTo", ctypes.c_wchar_p),            ("fFlags", ctypes.c_ushort),            ("fAnyOperationsAborted", ctypes.c_bool),            ("hNameMappings", ctypes.c_void_p),            ("lpszProgressTitle", ctypes.c_wchar_p),        ]    FO_DELETE = 0x0003    FOF_ALLOWUNDO = 0x0040    FOF_NOCONFIRMATION = 0x0010    FOF_SILENT = 0x0004    op = SHFILEOPSTRUCTW()    op.hwnd = None    op.wFunc = FO_DELETE    op.pFrom = abs_path + '\0'    op.pTo = None    op.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT    op.fAnyOperationsAborted = False    op.hNameMappings = None    op.lpszProgressTitle = None    result = ctypes.windll.shell32.SHFileOperationW(ctypes.byref(op))    if result != 0:        raise OSError(f"SHFileOperationW returned {result}")    if op.fAnyOperationsAborted:        raise OSError("Operation was aborted")def set_file_mtime(path, new_time=None):    if new_time is None:        new_time = datetime.now()    timestamp = new_time.timestamp()    os.utime(path, (timestamp, timestamp))def show_fatal_error(msg):    try:        ctypes.windll.user32.MessageBoxW(0, msg, "启动错误"0x10)    except:        print(msg, file=sys.stderr)# ========== 配色主题 ==========COLORS = {    'bg_main''#F8F9FA',    'bg_card''#FFFFFF',    'primary''#2563EB',    'primary_hover''#1D4ED8',    'danger''#DC2626',    'danger_hover''#B91C1C',    'success''#059669',    'success_hover''#047857',    'text''#1F2937',    'text_light''#6B7280',    'border''#E5E7EB',    'header''#1E3A5F',}class FileFilterApp:    def __init__(self, root):        self.root = root        self.root.title("文件筛选工具 v3.0")        self.root.geometry("880x720")        self.root.configure(bg=COLORS['bg_main'])        self.root.resizable(FalseFalse)        self.current_dir = os.getcwd()        self._create_widgets()        self.refresh_list()    def _create_widgets(self):        # ----- 标题栏 -----        header = tk.Frame(self.root, bg=COLORS['header'], height=55)        header.pack(fill='x')        header.pack_propagate(False)        tk.Label(header, text="文件筛选工具", font=("微软雅黑"18"bold"),                fg='white', bg=COLORS['header']).pack(side='left', padx=20, pady=8)        tk.Label(header, text="智能文件管理", font=("微软雅黑"11),                fg='#B0C4DE', bg=COLORS['header']).pack(side='left', pady=14)        # ----- 主内容区 -----        main = tk.Frame(self.root, bg=COLORS['bg_main'])        main.pack(fill='both', expand=True, padx=16, pady=10)        # 左侧面板        left = tk.Frame(main, bg=COLORS['bg_main'], width=260)        left.pack(side='left', fill='y', padx=(010))        left.pack_propagate(False)        self._create_info_panel(left)        self._create_action_panel(left)        # 右侧面板:文件列表        right = tk.Frame(main, bg=COLORS['bg_card'], bd=1, relief='solid')        right.pack(side='right', fill='both', expand=True)        tk.Label(right, text="文件列表", font=("微软雅黑"12"bold"),                bg=COLORS['bg_card'], fg=COLORS['text']).pack(anchor='w', padx=12, pady=8)        self.stats_label = tk.Label(right, text="共 0 个文件", fg=COLORS['text_light'],                                   bg=COLORS['bg_card'], font=("微软雅黑"9))        self.stats_label.pack(anchor='w', padx=12)        list_frame = tk.Frame(right, bg=COLORS['bg_card'])        list_frame.pack(fill='both', expand=True, padx=12, pady=5)        scrollbar = tk.Scrollbar(list_frame, bg=COLORS['bg_card'])        scrollbar.pack(side=tk.RIGHT, fill=tk.Y)        self.listbox = tk.Listbox(list_frame, selectmode=tk.EXTENDED,                                  yscrollcommand=scrollbar.set, font=("Consolas"10),                                  bg='#FAFBFC', fg=COLORS['text'],                                  selectbackground=COLORS['primary'],                                  selectforeground='white',                                  relief='flat', highlightthickness=1,                                  highlightcolor=COLORS['border'])        self.listbox.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)        scrollbar.config(command=self.listbox.yview)        # 底部日志        log_frame = tk.LabelFrame(self.root, text="操作日志", font=("微软雅黑"9),                                  bg=COLORS['bg_main'], fg=COLORS['text_light'])        log_frame.pack(fill='x', padx=16, pady=(010))        self.log_text = tk.Text(log_frame, height=4, font=("Consolas"9),                                wrap="word", bg='#FAFBFC', fg=COLORS['text'],                                relief='flat', highlightthickness=1,                                highlightcolor=COLORS['border'])        self.log_text.pack(fill='x', padx=6, pady=6)        self.log_text.config(state="disabled")    def _create_info_panel(self, parent):        # 目录信息卡        card = tk.Frame(parent, bg=COLORS['bg_card'], bd=1, relief='solid')        card.pack(fill='x', pady=5, padx=2)        tk.Label(card, text="当前目录", font=("微软雅黑"10"bold"),                bg=COLORS['bg_card'], fg=COLORS['text']).pack(anchor='w', padx=10, pady=(82))        self.dir_label = tk.Label(card, text=self.current_dir,                                  bg=COLORS['bg_card'], fg=COLORS['text_light'],                                  font=("Consolas"8), wraplength=230, justify='left')        self.dir_label.pack(anchor='w', padx=10, pady=(08))        btn_frame = tk.Frame(card, bg=COLORS['bg_card'])        btn_frame.pack(fill='x', padx=10, pady=(010))        tk.Button(btn_frame, text="选择文件夹", command=self._select_dir,                 bg=COLORS['primary'], fg='white', font=("微软雅黑"9),                 relief='flat', cursor='hand2').pack(side='left', padx=(05))        tk.Button(btn_frame, text="刷新", command=self.refresh_list,                 bg='#E5E7EB', fg=COLORS['text'], font=("微软雅黑"9),                 relief='flat', cursor='hand2').pack(side='left')        # 选项卡        opt_card = tk.Frame(parent, bg=COLORS['bg_card'], bd=1, relief='solid')        opt_card.pack(fill='x', pady=5, padx=2)        tk.Label(opt_card, text="选项", font=("微软雅黑"10"bold"),                bg=COLORS['bg_card'], fg=COLORS['text']).pack(anchor='w', padx=10, pady=8)        self.recursive_var = tk.BooleanVar(value=True)        tk.Checkbutton(opt_card, text="包含子文件夹(递归)",                       variable=self.recursive_var, command=self.refresh_list,                       font=("微软雅黑"9), bg=COLORS['bg_card'],                       activebackground=COLORS['bg_card']).pack(anchor='w', padx=10, pady=2)        self.show_detail_var = tk.BooleanVar(value=False)        tk.Checkbutton(opt_card, text="显示完整路径",                       variable=self.show_detail_var, command=self.refresh_list,                       font=("微软雅黑"9), bg=COLORS['bg_card'],                       activebackground=COLORS['bg_card']).pack(anchor='w', padx=10, pady=2)    def _create_action_panel(self, parent):        # Tab切换        self.notebook = ttk.Notebook(parent)        self.notebook.pack(fill='x', pady=5, padx=2)        style = ttk.Style()        style.configure('TNotebook.Tab', font=("微软雅黑"9))        # Tab 1: 筛选删除        tab1 = tk.Frame(self.notebook, bg=COLORS['bg_main'])        self.notebook.add(tab1, text="筛选删除")        card1 = tk.Frame(tab1, bg=COLORS['bg_card'], bd=1, relief='solid')        card1.pack(fill='x', pady=5, padx=2)        tk.Label(card1, text="关键字", font=("微软雅黑"10"bold"),                bg=COLORS['bg_card'], fg=COLORS['text']).pack(anchor='w', padx=10, pady=(104))        self.keyword_entry = tk.Entry(card1, width=24, font=("微软雅黑"10),                                     relief='solid', highlightthickness=1,                                     highlightcolor=COLORS['primary'])        self.keyword_entry.pack(anchor='w', padx=10, pady=(08))        self.mode_var = tk.StringVar(value="delete_contain")        tk.Radiobutton(card1, text="删除包含关键字的文件",                       variable=self.mode_var, value="delete_contain",                       font=("微软雅黑"9), bg=COLORS['bg_card'],                       activebackground=COLORS['bg_card']).pack(anchor='w', padx=10, pady=2)        tk.Radiobutton(card1, text="删除不包含关键字的文件",                       variable=self.mode_var, value="delete_not_contain",                       font=("微软雅黑"9), bg=COLORS['bg_card'],                       activebackground=COLORS['bg_card']).pack(anchor='w', padx=10, pady=2)        tk.Button(card1, text="执行删除 → 回收站", command=self._execute_delete,                 bg=COLORS['danger'], fg='white', font=("微软雅黑"10"bold"),                 relief='flat', cursor='hand2', width=20).pack(pady=12)        # Tab 2: 修改日期        tab2 = tk.Frame(self.notebook, bg=COLORS['bg_main'])        self.notebook.add(tab2, text="修改日期")        card2 = tk.Frame(tab2, bg=COLORS['bg_card'], bd=1, relief='solid')        card2.pack(fill='x', pady=5, padx=2)        tk.Label(card2, text='修改日期',                font=("微软雅黑"10"bold"),                bg=COLORS['bg_card'], fg=COLORS['text']).pack(anchor='w', padx=10, pady=(104))        tk.Label(card2, text='将文件"修改日期"调整为:',                font=("微软雅黑"9), bg=COLORS['bg_card'],                fg=COLORS['text_light']).pack(anchor='w', padx=10)        self.date_var = tk.StringVar(value=datetime.now().strftime("%Y-%m-%d %H:%M:%S"))        tk.Entry(card2, textvariable=self.date_var, width=24,                font=("Consolas"10), relief='solid',                highlightthickness=1, highlightcolor=COLORS['primary']).pack(anchor='w', padx=10, pady=5)        tk.Label(card2, text="格式: YYYY-MM-DD HH:MM:SS",                fg=COLORS['text_light'], font=("微软雅黑"8),                bg=COLORS['bg_card']).pack(anchor='w', padx=10)        tk.Button(card2, text="一键修改为今天", command=self._execute_set_date,                 bg=COLORS['success'], fg='white', font=("微软雅黑"10"bold"),                 relief='flat', cursor='hand2', width=20).pack(pady=12)    def log(self, message):        self.log_text.config(state="normal")        self.log_text.delete("1.0""end")        self.log_text.insert("1.0", message)        self.log_text.config(state="disabled")        self.root.update()    def _select_dir(self):        new_dir = filedialog.askdirectory(initialdir=self.current_dir)        if new_dir:            self.current_dir = new_dir            self.dir_label.config(text=self.current_dir)            self.refresh_list()    def refresh_list(self):        self.listbox.delete(0, tk.END)        recursive = self.recursive_var.get()        show_full = self.show_detail_var.get()        count = 0        try:            if recursive:                for root_dir, dirs, files in os.walk(self.current_dir):                    rel_root = os.path.relpath(root_dir, self.current_dir)                    if rel_root == ".":                        rel_root = ""                    for file in files:                        count += 1                        if show_full:                            display = os.path.join(root_dir, file)                        else:                            display = os.path.join(rel_root, file) if rel_root else file                        self.listbox.insert(tk.END, display)            else:                for item in sorted(os.listdir(self.current_dir)):                    full_path = os.path.join(self.current_dir, item)                    if os.path.isfile(full_path):                        count += 1                        self.listbox.insert(tk.END, item)            self.stats_label.config(text=f"共 {count} 个文件")        except Exception as e:            messagebox.showerror("错误"f"读取目录失败:{e}")    def _execute_delete(self):        keyword = self.keyword_entry.get().strip()        if not keyword:            messagebox.showwarning("警告""请输入关键字")            return        file_list = list(self.listbox.get(0, tk.END))        if not file_list:            messagebox.showinfo("提示""没有文件可操作")            return        mode = self.mode_var.get()        to_delete = []        for display_path in file_list:            if os.path.isabs(display_path):                full_path = display_path            else:                full_path = os.path.join(self.current_dir, display_path)            basename = os.path.basename(full_path)            if mode == "delete_contain":                if keyword in basename:                    to_delete.append(full_path)            else:                if keyword not in basename:                    to_delete.append(full_path)        if not to_delete:            messagebox.showinfo("提示""没有符合条件的文件")            return        msg = f"将删除 {len(to_delete)} 个文件(移至回收站)。\n\n确定继续吗?"        if not messagebox.askyesno("确认操作", msg):            return        deleted = 0        errors = []        for full_path in to_delete:            try:                send_to_recycle_bin(full_path)                deleted += 1            except Exception as e:                errors.append(f"{os.path.basename(full_path)}{e}")        result = f"成功将 {deleted} 个文件移至回收站"        if errors:            result += f"\n失败 {len(errors)} 个:\n" + "\n".join(errors[:5])        self.log(result)        messagebox.showinfo("完成", result)        self.refresh_list()    def _execute_set_date(self):        file_list = list(self.listbox.get(0, tk.END))        if not file_list:            messagebox.showinfo("提示""没有文件可操作")            return        date_str = self.date_var.get().strip()        try:            if date_str:                target_time = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")            else:                target_time = datetime.now()        except ValueError:            messagebox.showerror("错误""日期格式错误,请使用 YYYY-MM-DD HH:MM:SS")            return        msg = (f"将把 {len(file_list)} 个文件的修改日期\n"               f"调整为: {target_time.strftime('%Y-%m-%d %H:%M:%S')}\n\n"               f"确定继续吗?")        if not messagebox.askyesno("确认操作", msg):            return        success = 0        errors = []        for display_path in file_list:            if os.path.isabs(display_path):                full_path = display_path            else:                full_path = os.path.join(self.current_dir, display_path)            try:                set_file_mtime(full_path, target_time)                success += 1            except Exception as e:                errors.append(f"{os.path.basename(full_path)}{e}")        result = f"成功修改 {success} 个文件的修改日期"        if errors:            result += f"\n失败 {len(errors)} 个:\n" + "\n".join(errors[:5])        self.log(result)        messagebox.showinfo("完成", result)        self.refresh_list()if __name__ == "__main__":    try:        root = tk.Tk()        app = FileFilterApp(root)        root.mainloop()    except Exception as e:        show_fatal_error(f"程序启动失败:\n\n{str(e)}\n\n详细错误:\n{traceback.format_exc()}")        raise

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-22 02:14:58 HTTP/2.0 GET : https://f.mffb.com.cn/a/504245.html
  2. 运行时间 : 0.327489s [ 吞吐率:3.05req/s ] 内存消耗:4,641.95kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4c2033a967679cb8311a188896dc04b4
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001179s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001456s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000649s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000666s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.002335s ]
  6. SELECT * FROM `set` [ RunTime:0.000630s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001817s ]
  8. SELECT * FROM `article` WHERE `id` = 504245 LIMIT 1 [ RunTime:0.013498s ]
  9. UPDATE `article` SET `lasttime` = 1787336099 WHERE `id` = 504245 [ RunTime:0.005914s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.000653s ]
  11. SELECT * FROM `article` WHERE `id` < 504245 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.005456s ]
  12. SELECT * FROM `article` WHERE `id` > 504245 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.012651s ]
  13. SELECT * FROM `article` WHERE `id` < 504245 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.060131s ]
  14. SELECT * FROM `article` WHERE `id` < 504245 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.004446s ]
  15. SELECT * FROM `article` WHERE `id` < 504245 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.053612s ]
0.331062s