Ubuntu桌面快捷方式失效:无法读取源文件夹文本文件
问题原因
通过Ubuntu桌面快捷方式启动程序时,当前工作目录(CWD)默认是用户主目录,而非可执行文件所在的/home/softwares目录。你代码中用Path.cwd()获取路径,会去主目录查找text.txt,自然找不到。另外你的快捷方式里存在笔误:Exce应改为Exec,这也可能导致启动异常。
解决方案
方案一:修改Python代码(推荐,适配所有启动场景)
调整代码逻辑,获取可执行文件的实际所在目录,而非依赖当前工作目录。PyInstaller打包单文件程序时,可通过sys.executable定位程序路径:
import sys from pathlib import Path def remote_db_connector(): # 判断是否为打包后的可执行程序 if getattr(sys, 'frozen', False): # 打包状态下,sys.executable指向可执行文件路径 app_dir = Path(sys.executable).parent else: # 开发环境下,使用当前工作目录 app_dir = Path.cwd() txtPath = app_dir / "text.txt" # 用with语句自动管理文件关闭,更安全高效 with open(txtPath, 'r') as myfile: return myfile.read()
方案二:修改桌面快捷方式(简单直接)
在桌面快捷配置中添加WorkingDirectory字段,指定程序所在目录,同时修正Exce的笔误:
[Desktop Entry] Type=Application Name=Mypro Exec=/home/softwares/Mypro Icon=/home/softwares/Myico.png Terminal=true StartupNotify=false WorkingDirectory=/home/softwares
修改后保存快捷方式,重新启动程序即可正常读取同目录下的text.txt文件。
内容的提问来源于stack exchange,提问作者Martin Jeaks
相关产品推荐
相关产品推荐

