You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyQt5打开FTP地址时如何直接调用系统文件资源管理器

解决方案

原代码使用QDesktopServices.openUrl时会调用系统注册的默认ftp协议处理程序,多数系统默认关联的是浏览器,因此会弹出打开方式选择窗口或直接跳转浏览器,无法直接唤起文件资源管理器。要实现需求可以直接调用对应系统的文件资源管理器进程,传入ftp地址即可。

完整实现代码

from PyQt5.QtCore import QUrl, QProcess, QDesktopServices
import sys

def open_ftp_in_explorer(ftp_path: str):
    if sys.platform == "win32":
        # Windows 直接调用资源管理器打开ftp地址
        QProcess.startDetached("explorer.exe", [ftp_path])
    elif sys.platform == "darwin":
        # macOS 指定用Finder打开
        QProcess.startDetached("open", ["-a", "Finder", ftp_path])
    elif sys.platform.startswith("linux"):
        # Linux 依次尝试常见桌面环境的默认资源管理器
        for fm in ["nautilus", "dolphin", "thunar", "pcmanfm"]:
            if QProcess.startDetached(fm, [ftp_path]):
                return
        # 所有尝试失败时 fallback 到默认打开逻辑
        url = QUrl(ftp_path, QUrl.TolerantMode)
        url.setScheme("ftp")
        QDesktopServices.openUrl(url)

# 调用示例
open_ftp_in_explorer("ftp://192.168.1.127:15010/intrusionfiles/detectionfiles/")

注意事项

  • 若ftp站点需要身份验证,可直接在地址中拼接认证信息,格式为 ftp://用户名:密码@IP:端口/路径,文件资源管理器会自动识别完成登录
  • 部分Linux桌面环境、macOS新版本可能需要先安装ftp协议支持组件,才能在资源管理器中正常挂载访问ftp目录
  • 无需额外对地址做QUrl格式处理,直接传入原始ftp字符串即可,避免协议识别异常

内容的提问来源于stack exchange,提问作者gkslsahin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:57:03