python-3.x 如何从项目根目录获取文件路径

dvtswwa3  于 2023-06-07  发布在  Python
关注(0)|答案(3)|浏览(207)

这是我的完整文件路径/Users/UserName/project/first_level/second/somename/my_file.py
我导入文件,然后想从相对项目中获取它的路径(对我来说,根是project
我需要得到first_level/second/somename/my_file.py当我执行my_file.__file__时,我得到了完整的路径
有人能帮忙吗

yx2lnoni

yx2lnoni1#

您可以使用os.path.relpath
假设你有结构

project
│   main.py
|
└───fist_level
│   │   
|   |____second_level
|   |    my_file.py
|   ...

如果您运行main.py

import os
from pathlib import Path

import fist_level.second_level.my_file

# will print relative path to my_file.py file from main.py
print(os.path.relpath(my_file.__file__, Path(__file__).parent))

如果您想从另一个文件中获取根项目的相对路径,则需要在某处设置ROOT_DIR,然后运行print(os.path.relpath(my_file.__file__, ROOT_DIR))
(Very在www.example.com中的Django中类似settings.py,它通常设置

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

a64a0gku2#

如果你确定/Users/UserName/project总是相同的,你可以用\分割路径,然后从列表中的第三个元素连接到末尾:

>>> path_to_file = "/Users/UserName/project/first_level/second/somename/my_file.py"
>>> ("/").join(path_to_file.split("/")[3:])
'project/first_level/second/somename/my_file.py'

如果你不知道它将位于何处,你可以在拆分列表中找到项目,然后加入:

>>> path_split = path_to_file.split("/")
>>> ("/").join(path_split[path_split.index("project")+1:])
'first_level/second/somename/my_file.py'
fdx2calv

fdx2calv3#

my_file.py可以使用relpath()

my_file.py

import os
print(os.path.relpath(__file__, os.curdir))

应该给予你:

first_level/second/somename/my_file.py

进口时

相关问题