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

Python脚本中使用xdg-open打开文件时调用错误应用的问题求助

Python脚本中使用xdg-open打开文件时调用错误应用的问题求助

我现在遇到一个头疼的问题:在Ubuntu机器上用Python脚本调用xdg-open打开文件时,它总是会启动错误的应用程序,但直接在shell里执行xdg-open命令却能正常打开对应的正确应用。

我已经试过以下几种调用方式了:

subprocess.Popen([f"xdg-open {file_path}"])
subprocess.Popen([f"xdg-open {file_path}"], user="user", env=os.environ, shell=True)

有没有大佬能帮我看看该怎么解决?


补充信息:

  • file_path是文件的完整路径,比如/tmp/file.odt,文件确实存在,因为能被打开,只是启动的应用不对
  • 这个文件是LibreOffice Writer格式的.odt文件
  • 在shell里执行xdg-open /tmp/file.odt时,会正常用LibreOffice Writer打开,完全符合预期
  • 但通过Python脚本调用时,它会用我Ubuntu上安装的ebook-viewer来打开这个文件
  • 我用subprocess.Popen而不是run是因为这段代码在异步函数里,我希望脚本能继续运行而不是等待文件关闭,之前查资料说这种情况要用Popen。不过我也试过subprocess.run,结果还是一样的
  • 大致说下我的脚本逻辑:启动一个websocket服务器,监听请求获取文件,把文件存到tmp目录,然后打开它。所有步骤都正常,就是打开文件的应用搞错了...

麻烦各位帮忙看看,谢谢啦!

备注:内容来源于stack exchange,提问作者Hühnerbrust

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:38:01