每当我在文件管理器窗口中单击脚本来执行它时,它都会以我的主目录作为其工作目录运行,而不是以我单击的包含脚本的目录运行。
如果代码需要访问脚本所在实际目录中的文件,这会很麻烦。
有没有什么办法可以改变这种行为?
例子:
foo.py
位于文件夹中/home/phil/src/python
foo.data
也位于那里并foo.py
在执行期间被读取。
如果我在该文件夹中打开终端并运行该脚本,它将以其/home/phil/src/python
工作目录运行,并成功找到并打开foo.data
但是,如果我打开文件管理器(我这里是 pcman,Lubuntu),导航到/home/phil/src/python
并双击foo.py
运行它,它将以其/home/phil
工作目录运行。它找不到它foo.data
,并且会失败。
经过一番谷歌搜索后,似乎 Nautilus 也发生了这种情况。
答案1
对于 bash 脚本,你可以使用以下命令启动脚本
cd "$(dirname "$0")"
或者更复杂更安全的版本。可能在 Python 中你可以做类似的事情(我不懂 Python),或者你可以用 Bash 脚本包装你的脚本。