Ubuntu - .desktop文件关联Python脚本:脚本运行正常但日志失效
解决桌面启动脚本无法写入日志的问题
这种情况我之前也碰到过,大概率是工作目录不匹配导致的,咱们一步步排查:
1. 先检查脚本里的日志路径写法
如果你的脚本里写的是相对路径,比如:
with open("script.log", "a") as f: f.write("日志内容\n")
那问题就出在这了:
- 当你在命令行
cd /home/user/Desktop后执行python script.py,脚本的工作目录就是/home/user/Desktop,所以会往这个目录下的script.log写内容; - 但双击桌面图标启动时,系统默认的工作目录是你的用户主目录(也就是
/home/user),脚本会尝试往/home/user/script.log写,如果这个文件不存在或者你没有写入权限,就会失败。
解决办法:用绝对路径写日志文件
把脚本里的日志路径改成绝对路径:
log_path = "/home/user/Desktop/script.log" with open(log_path, "a") as f: f.write("日志内容\n")
2. 或者给Desktop文件指定工作目录
如果你不想改脚本,也可以在Start.desktop里加上WorkingDirectory字段,指定脚本所在的目录:
[Desktop Entry] Version=1.0 Type=Application Terminal=true Name=Start Exec=/home/user/Desktop/script.py WorkingDirectory=/home/user/Desktop Comment=startup
这样双击图标时,脚本的工作目录就和命令行执行时一致了,相对路径也能正常找到日志文件。
3. 排查权限问题(可能性较低)
如果上面两种方法都不行,那可以检查script.log的权限:
- 打开终端,执行
ls -l /home/user/Desktop/script.log,看看文件的所有者和组是不是你的用户; - 如果不是,执行
sudo chown user:user /home/user/Desktop/script.log(把user换成你的用户名),给文件赋予正确的权限。
一般来说,前两种方法就能解决问题,先试试绝对路径或者指定工作目录吧!
内容的提问来源于stack exchange,提问作者user9001965
相关产品推荐
相关产品推荐

