python|python程序无法以绝对路径执行,只能在程序文件夹下运行的解决方法

简介 在做一个项目的时候,需要将一个python程序设为开机自启动,因此自启动时的启动命令是绝对路径启动的,然而绝对路径的启动会导致python无法正常运行,会报错找不到程序所需要的其他文件(放在和源文件一个目录下),如图:
python|python程序无法以绝对路径执行,只能在程序文件夹下运行的解决方法
文章图片

经过分析后定位了问题,也找到了解决方案,使其可以正常运行。
原因分析 分析源代码,可以发现源代码涉及到一个读取文件的函数如下:
python|python程序无法以绝对路径执行,只能在程序文件夹下运行的解决方法
文章图片

在该目录下直接使用python3 ./xxx.py命令可以正常读取到文件,而使用/home/xxx/xxxxx/xxx.py的绝对路径的方式则会出错。可以看到读取函数中使用的是相对路径,而使用两种命令的方式可能会导致工作目录不一致的问题。前者可以保证程序运行时工作目录就在工程目录下,而使用绝对路径运行时工作目录可以是任何位置,而由于读取函数时会在工作目录下寻找该配置文件,在不合理的工作目录下自然也就无法运行。
解决方法 找到了问题所在,自然也很容易解决问题了,只需要在程序开始读取配置时手动将工作目录切换到源文件所在目录下即可。
更换工作目录的方法:

import os os.chdir('path')

获取源文件所在目录下的方法:
improt os print(os.path.dirname(os.path.abspath(__file__)))

【python|python程序无法以绝对路径执行,只能在程序文件夹下运行的解决方法】只需要将两者结合一下,就可以完成在每次读取文件前切换工作目录了!
import os os.chdir(os.path.dirname(os.path.abspath(__file__)))#切换目录到当前脚本下

    推荐阅读