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

Python 在模块中具有相对于调用该模块的文件的相对路径,python,class,module,path,Python,Class,Module,Path,假设我有当前的文件结构: 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 [...]

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

  • 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
在同一个文件夹中,你可以使用预定义的
\uuuuu file\uuuu
属性来确定它相对于模块的路径:

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

你还有其他问题。例如,main.py中modules.module导入模块的
无法工作。main.py和script.py都正常工作(没有读取.txt文件)。你为什么认为它不应该起作用?感谢您的帮助:)main.py是否调用/导入script.py,如果是,如何调用?它还没有调用script.py,但我计划使用main.py作为程序,我将从中启动几个脚本,如此script.py。导入是否会带来冲突?我是否理解正确,您需要模块的绝对路径,才能访问与之相关的文件?此解决方案非常适合我的情况,因为我只需修改模块,而不必修改我将使用的几个script.py。谢谢:)这就是问题所在-
module.py
不再关心如何调用它来定位数据文件。