在模块中具有相对于调用模块的文件的相对路径

时间:2015-05-28 13:35:25

标签: python class module path

假设我有当前的文件结构:

  • 应用\模块\ module.py
  • 应用\模块\ somefile.txt
  • 应用\脚本\ script.py
  • 应用\ 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"

我不想使用绝对路径,因为我希望我的app文件夹可以移动。 我想到了一个相对于根文件夹的路径,但我不知道它是否是一个干净的解决方案,我不想用redondant东西污染我的所有脚本。

有没有一种干净的方法可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

我不确定您所做的一切,但由于somefile.txtmodule.py位于同一文件夹中,您可以通过以下方式创建相对于模块的路径使用其预定义的__file__属性:

import os
fileToRead = os.path.join(os.path.dirname(__file__), "somefile.txt")