Had to post this question again as my previous one was closed saying that my question wasn't focused. So here by I'm trying again.
My Folder structure looks like this:
root_folder:
- core
- files
- solution
- sub_folder
- test.py
- tests
I need to get the absolute path of sub folder files
from the python file test.py
.
Have tried various ways using os.path.abs
and os.path.dirname
but did not work for me.
Any help could be appreciated.
Tested code and output:
print(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'files'))
output: /home/kulasangar/Documents/bst_work/root_folder/solution/files
expected output:
/home/kulasangar/Documents/bst_work/root_folder/files
CodePudding user response:
You can use sys.path
to access the root of your project from everywhere in your code.
import sys
print('My nested folder : ', os.getcwd())
print('File name : ', os.path.basename(__file__))
print('Root path:', sys.path[1])
Assuming the same folder structure you posted, my project folder is named testing
. So, the output is
My nested folder : /Users/hellbreak/Documents/Coding/Python Lab/testing/solutions/sub_folder
File name : test.py
Root path: /Users/hellbreak/Documents/Coding/Python Lab/testing
Then, if you are interested in a particular path, you can
print('My nested folder : ', os.getcwd())
print('File name : ', os.path.basename(__file__))
print('Root path:', sys.path[1] '/files')
The output:
My nested folder : /Users/hellbreak/Documents/Coding/Python Lab/testing/solutions/sub_folder
File name : test.py
Root path: /Users/hellbreak/Documents/Coding/Python Lab/testing/files
CodePudding user response:
On top of @hellbreak's answer, I figured out another way:
from pathlib import Path
import os
current_dir = Path(__file__)
project_root_dir_path = [p for p in current_dir.parents if p.parts[-1] == 'root_folder'][0]
files_path = os.path.join(project_root_dir_path, 'files')