Difference between os.path.dirname(os.path.abspath(__file__)) and os.path.dirname(__file__)

后端 未结 1 1241
一向
一向 2021-01-30 11:44

I am a beginner working on Django Project. Settings.py file of a Django project contains these two lines:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.absp         


        
相关标签:
1条回答
  • 2021-01-30 12:27

    BASE_DIR is pointing to the parent directory of PROJECT_ROOT. You can re-write the two definitions as:

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

    because the os.path.dirname() function simply removes the last segment of a path.

    In the above, the __file__ name points to the filename of the current module, see the Python datamodel:

    __file__ is the pathname of the file from which the module was loaded, if it was loaded from a file.

    However, it can be a relative path, so the os.path.abspath() function is used to turn that into an absolute path before removing just the filename and storing the full path to the directory the module lives in in PROJECT_ROOT.

    0 讨论(0)
提交回复
热议问题