Ok...I dont know where module x
is, but I know that I need to get the path to the directory two levels up.
So, is there a more elegant way to do:
You can use pathlib. Unfortunately this is only available in the stdlib for Python 3.4. If you have an older version you'll have to install a copy from PyPI here. This should be easy to do using pip
.
from pathlib import Path
p = Path(__file__).parents[1]
print(p)
# /absolute/path/to/two/levels/up
This uses the parents
sequence which provides access to the parent directories and chooses the 2nd one up.
Note that p
in this case will be some form of Path
object, with their own methods. If you need the paths as string then you can call str
on them.
Assuming you want to access folder named xzy two folders up your python file. This works for me and platform independent.
".././xyz"
Very easy:
Here is what you want:
import os.path as path
two_up = path.abspath(path.join(__file__ ,"../.."))
For getting the directory 2 levels up:
import os.path as path
two_up = path.abspath(path.join(os.getcwd(),"../.."))
(pathlib.Path('../../') ).resolve()
I have found that the following works well in 2.7.x
import os
two_up = os.path.normpath(os.path.join(__file__,'../'))