【发布时间】:2011-06-23 12:25:18
【问题描述】:
考虑以下 Python 代码:
import os
print os.getcwd()
我使用os.getcwd() 到get the script file's directory location。当我从命令行运行脚本时,它会为我提供正确的路径,而当我从 Django 视图中的代码运行的脚本运行它时,它会打印 /。
如何从 Django 视图运行的脚本中获取脚本的路径?
更新:
总结到目前为止的答案 - os.getcwd() 和 os.path.abspath() 都给出了当前工作目录,该目录可能是也可能不是脚本所在的目录。在我的网络主机设置中, 只给出了没有路径的文件名。__file__
在 Python 中是否有任何方法(总是)能够接收脚本所在的路径?
【问题讨论】:
-
您应该更仔细地阅读该链接文章。它从不建议使用
getcwd会告诉您脚本的位置。它建议argv[0]、dirname和abspath。 -
@Rob - 我的虚拟主机上的“print sys.argv[0]”只给出文件名,没有路径
-
@Rob - 这是链接文章“os.getcwd() 返回当前工作目录”的摘录。
-
是的,但是当前工作目录与您的脚本所在的目录绝对没有关系。与
os.chdir相比,它设置当前工作目录;它不会将您的脚本文件移动到硬盘驱动器上的新位置。 initial 工作目录可能与您的脚本所在的目录相同,但并非总是如此;这篇文章甚至证明了这一点。 -
请注意,
__file__将返回脚本上下文的文件名。如果您从__main__调用外部脚本,请注意购买者 - 您可能会得到与预期不同的响应。
标签: python directory django-views getcwd