在模块中具有相对于调用模块的文件的相对路径
Having a relative path in a module relative to the file calling the module
假设我有当前的文件结构:
- app\modules\module.py
- app\modules\somefile.txt
- app\scripts\script.py
- app\main.py
modules\script.py :
import sys
sys.path.append("..\")
from modules.module import module
[...]
main.py :
import sys
from modules.module import module
[...]
modules\module.py :
[...]
fileToRead="somefile.txt"
问题是:
- 如果我的模块是从main.py导入的,somefile.txt的路径应该是
"modules\somefile.txt"
- 如果我的模块是从script.py导入的,somefile.txt的路径应该是
"..\modules\somefile.txt"
我不想使用绝对路径,因为我希望我的应用程序文件夹可以移动。
我想到了一个相对于根文件夹的路径,但我不知道它是否是一个干净的解决方案,我不想用多余的东西污染我的所有脚本。
有没有一种干净的方法来处理这个问题?
我不确定你在做什么,但由于 somefile.txt
与 module.py
在同一个文件夹中,你可以通过使用其相对于模块的路径预定义 __file__
属性:
import os
fileToRead = os.path.join(os.path.dirname(__file__), "somefile.txt")
假设我有当前的文件结构:
- app\modules\module.py
- app\modules\somefile.txt
- app\scripts\script.py
- app\main.py
modules\script.py :
import sys
sys.path.append("..\")
from modules.module import module
[...]
main.py :
import sys
from modules.module import module
[...]
modules\module.py :
[...]
fileToRead="somefile.txt"
问题是:
- 如果我的模块是从main.py导入的,somefile.txt的路径应该是
"modules\somefile.txt"
- 如果我的模块是从script.py导入的,somefile.txt的路径应该是
"..\modules\somefile.txt"
我不想使用绝对路径,因为我希望我的应用程序文件夹可以移动。 我想到了一个相对于根文件夹的路径,但我不知道它是否是一个干净的解决方案,我不想用多余的东西污染我的所有脚本。
有没有一种干净的方法来处理这个问题?
我不确定你在做什么,但由于 somefile.txt
与 module.py
在同一个文件夹中,你可以通过使用其相对于模块的路径预定义 __file__
属性:
import os
fileToRead = os.path.join(os.path.dirname(__file__), "somefile.txt")