Get relative path of script or notebook in Python
Problem statement: Get an absolute path of your project where a file/notebook is located and join it with a string pointing to a folder.
Solution:
This function will give you an absolute Path in relationship to a current python script or notebook.
from pathlib import Path
def get_project_root() -> Path:
try:
# This will give you a Path object pointing to the parent of the folder where the script is located.
# If your script is `/root/scripts/script.py`, the result will be an absolute path '/root'.
return Path(__file__).parent.parent
except NameError as error:
# This will give you root folder of the project if this runned through jupyter notebook
return Path().joinpath().absolute().parents[0]
except Exception as exception:
print(exception)
When you will work with Path
paths don’t add trailing slashes when joining paths. Code below
root= get_project_root()
path_to_file = Path.joinpath(root, 'data/data.feather')
will result in path_to_file = /data/final.feather
. To obtain path_to_file = /root/data/final.feather
you shouldn’t use the slash at the begining:
root= get_project_root()
path_to_file = Path.joinpath(root, 'data/data.feather')
Instead of leaving a comment, you could also contact me āļø.