我已经在Python中使用绝对路径和相对路径进行了“战斗”一段时间,我知道关于此主题有很多问题,但是我找不到我的特定问题的答案。
给出以下项目结构:
package/
subpackage1/
moduleX.py
moduleY.py
subpackage2/
moduleZ.py
folder1/
file1.txt
我正在从moduleX.py
中导入一个功能,该功能需要moduleZ.py
中存储的信息才能正常工作。我从file1.txt
导入函数没有问题,但是由于需要moduleZ.py
,因此出现错误消息“无此文件或目录”。
我的问题是:当file1.txt
中的函数在导入后尝试打开moduleZ.py
时,会考虑哪个路径?
我希望它与相对路径一起工作,但是我找不到使其工作的方式。
谢谢。
我的问题是:当模块Z.py中的函数在导入后尝试打开file1.txt时,它会考虑哪个路径?
它考虑从运行代码的人员/进程的工作目录开始的相对路径。
查找数据文件的标准方法之一是记下包根目录的目录名称,即。在file1.txt
中:
package/__init__.py
然后每当您要访问文件时:
DIRNAME = os.path.dirname(__file__)
您是否尝试在moduleZ.py中放入类似内容以获取当前所在的路径,然后从生成的变量中获取相对路径?
from package import DIRNAME
file1_txt = os.path.join(DIRNAME, 'subpackage2', 'folder1', 'file1.txt')