考虑下面的Python代码:
import os
print os.getcwd()
我使用os.getcwd()来获取脚本文件的目录位置。当我从命令行运行脚本时,它会给我正确的路径,而当我从Django视图中由代码运行的脚本运行它时,它会打印/。
如何从Django视图运行的脚本中获取脚本的路径?
更新:
总结到目前为止的答案- os.getcwd()和os.path.abspath()都给出了当前工作目录,该目录可能是脚本所在的目录,也可能不是。在我的web主机设置__file__只给出文件名没有路径。
在Python中没有任何方法(总是)能够接收脚本驻留的路径吗?
这段代码:
import os
dn = os.path.dirname(os.path.realpath(__file__))
将“dn”设置为包含当前执行脚本的目录的名称。这段代码:
fn = os.path.join(dn,"vcb.init")
fp = open(fn,"r")
设置“fn”为“script_dir/vcb”。Init”(以平台独立的方式)并打开
当前正在执行的脚本读取的文件。
请注意,“当前执行的脚本”有些模糊。如果整个程序由1个脚本组成,那么这就是当前正在执行的脚本和“sys. exe”脚本。路径[0]“解决方案工作正常。但如果你的应用程序由脚本A组成,它导入某个包“P”,然后调用脚本“B”,那么“P.B”当前正在执行。如果你需要获取包含“P.B”的目录,你需要“os.path.realpath(__file__)”解决方案。
"__file__"只是给出了当前正在执行的(堆栈顶部)脚本的名称:"x.py"。它不
给出任何路径信息。它是“os.path”。调用Realpath来完成实际工作。