从导入的函数打开文件

问题描述 投票:0回答:2

我已经在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时,会考虑哪个路径?

我希望它与相对路径一起工作,但是我找不到使其工作的方式。

谢谢。

python python-3.x python-import relative-path absolute-path
2个回答
1
投票

我的问题是:当模块Z.py中的函数在导入后尝试打开file1.txt时,它会考虑哪个路径?

它考虑从运行代码的人员/进程的工作目录开始的相对路径。

查找数据文件的标准方法之一是记下包根目录的目录名称,即。在file1.txt中:

package/__init__.py

然后每当您要访问文件时:

DIRNAME = os.path.dirname(__file__)

0
投票

您是否尝试在moduleZ.py中放入类似内容以获取当前所在的路径,然后从生成的变量中获取相对路径?

from package import DIRNAME
file1_txt = os.path.join(DIRNAME, 'subpackage2', 'folder1', 'file1.txt')
© www.soinside.com 2019 - 2024. All rights reserved.