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
相关产品推荐
相关产品推荐

