sbl*_*zio 2 python working-directory home-directory
这是我的第一个问题.
我的python脚本打开并使用以下简单功能从当前文本文件中读取:
open("config.ini", "r")
Run Code Online (Sandbox Code Playgroud)
因为这是一个相对路径,所以它应该起作用,因为config.ini被放置在同一目录中,就像脚本在启动时一样,应该是当前工作的目录.
事实上,这在我的所有3个Linux机箱上都能完美运行,但我有一个用户需要支持,因为他在打开config.ini时遇到错误.错误提高是因为
os.path.exists("config.ini")
Run Code Online (Sandbox Code Playgroud)
即使文件在那里也返回false!
试图解决这个问题,我们发现使其工作的唯一方法是将config.ini放在他的主目录中,尽管假设工作目录是另一个.
此外,如果我的脚本试图在当前工作目录中创建一个文件,那么该文件总是在他的家庭目录中创建,所以我认为由于某种原因,他的工作目录总是在家!
我该如何解决这个问题?也许我可以引入绝对路径,但我担心os.getcwd()将返回homedir而不是正确的路径.
我是否应该建议这个用户以某种方式修理他的机器?
对不起这个长问题,但英语不是我的第一语言,我是编码的初学者,所以有一些难以解释.
非常感谢你提前!=)
可能是用户正在从他的主目录执行脚本吗?
即假设脚本在:
/home/user/test/foo/foo.py
Run Code Online (Sandbox Code Playgroud)
但是用户这样称呼它:
/home/user> python test/foo/foo.py
Run Code Online (Sandbox Code Playgroud)
在这种情况下,脚本看到的"当前目录"是/home/user
.
你可以做的是通过调用这个函数找出脚本本身所在的目录:
import os
def script_dir():
return os.path.dirname(os.path.realpath(__file__))
Run Code Online (Sandbox Code Playgroud)
它将始终返回脚本所在的目录,而不是当前可能不同的目录.然后,您可以安全地存储配置文件.