Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python os.path.dirname(os.path.abspath(_文件__))和os.path.dirname(_文件__)之间的差异_Python_Django_Os.path - Fatal编程技术网

Python os.path.dirname(os.path.abspath(_文件__))和os.path.dirname(_文件__)之间的差异

Python os.path.dirname(os.path.abspath(_文件__))和os.path.dirname(_文件__)之间的差异,python,django,os.path,Python,Django,Os.path,我是Django项目的初学者。 Django项目的Settings.py文件包含以下两行: BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__)) 我想知道两者的区别,因为我认为两者都指向同一个目录。如果您能提供一些os.path函数的链接,那将非常有帮助。BASE\u DIR指向PROJECT

我是Django项目的初学者。 Django项目的Settings.py文件包含以下两行:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

我想知道两者的区别,因为我认为两者都指向同一个目录。如果您能提供一些os.path函数的链接,那将非常有帮助。

BASE\u DIR
指向
PROJECT\u ROOT
的父目录。您可以将这两个定义重新编写为:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
BASE_DIR = os.path.dirname(PROJECT_ROOT)
因为只需删除路径的最后一段

在上面,文件名指向当前模块的文件名,请参见:

\uuuuu file\uuuu
是从中加载模块的文件的路径名(如果模块是从文件加载的)


但是,它可以是一个相对路径,因此在删除文件名并存储模块所在目录的完整路径之前,可以使用将其转换为绝对路径。您是否尝试过这两个路径并进行比较?否,它们没有指向同一个目录。