ollama部署Phi-4-mini-reasoning快速上手:5分钟完成本地大模型推理环境搭建
2026/4/19 5:03:42
在前端或 Node.js 开发过程中,开发者经常需要管理大量的项目文件夹。频繁地在各个目录间切换、手动打开终端执行node app.js、再手动打开浏览器输入localhost:端口,以及定期备份代码到优盘,这些重复性劳动降低了开发效率。为了解决这些痛点,我们使用 Python 和wxPython图形库开发了一款集“项目管理、一键联动运行、自动化备份”于一体的桌面工具。
C:\pythoncode\new\folder_manager_tool.py
wxPython(提供丰富的原生桌面控件)。sqlite3(轻量级、无需配置的本地数据库)。subprocess(用于调用系统命令行执行 Node.js 和启动 Chrome)。os、shutil、zipfile(处理路径扫描与压缩)。这是程序最基础的交互逻辑。通过绑定wx.EVT_LIST_ITEM_SELECTED事件,当用户点击左侧项目列表时,触发路径扫描。
技术实现:
os.listdir获取内容,并通过sorted(items, key=lambda e: (not os.path.isdir(...)))确保文件夹始终排列在文件上方。last_js文件名,并在渲染列表时利用self.file_list.Select(idx)自动高亮。程序预设了备份根目录(如D:\nodejs程序集,可代表优盘挂载点)。
核心代码分析:
defon_smart_zip(self,event):# 1. 获取当前文件夹名并创建备份子目录folder_name=os.path.basename(self.current_folder)target_dir=os.path.join(r"D:\nodejs程序集",folder_name)ifnotos.path.exists(target_dir):os.makedirs(target_dir)# 2. 遍历右侧 Checkbox 选中的文件withzipfile.ZipFile(zip_path,'w',zipfile.ZIP_DEFLATED)asz:foriteminchecked:full_path=os.path.join(self.current_folder,item)# 3. 如果是文件夹则递归压缩,文件则直接写入ifos.path.isfile(full_path):z.write(full_path,item)else:forroot,_,filesinos.walk(full_path):forfinfiles:fp=os.path.join(root,f)z.write(fp,os.path.relpath(fp,self.current_folder))该功能的精髓在于使用os.walk进行递归扫描,确保选中的子文件夹及其内部成千上万个文件能被完整地封装进 ZIP 包。
这是提高生产力的核心。通过subprocess模块,我们不再需要手动打开cmd。
关键点:
cwd=self.current_folder参数,确保 Node.js 在正确的目录下运行,避免路径找不到的问题。/k参数(start cmd /k "node xxx.js"),这样即使 Node.js 报错退出,控制台窗口也会保持开启状态,方便开发者查看错误日志。每个 Node.js 项目通常占用不同的端口(如 3000, 8080)。我们在数据库中为每个路径维护了一个port字段。
实现流程:
EVT_TEXT事件,用户输入的瞬间即保存至数据库。auto_chrome_cb是否勾选。url=f"http://localhost:{self.port_ctrl.GetValue()}"subprocess.Popen([CHROME_PATH,url])通过直接调用 Chrome 的绝对路径并传入 URL,实现“运行即打开”的无缝体验。
通过上述逻辑,我们成功构建了一个三栏式的管理台:
node_modules文件夹)。