从导入的函数打开文件

Opening a file from an imported function

我 "fighting" 在 Python 中使用绝对路径和相对路径已经有一段时间了,我知道关于这个主题有很多问题,但我找不到答案针对我的特殊问题。

给定以下项目结构:

package/
    subpackage1/
        moduleX.py
        moduleY.py
    subpackage2/
        moduleZ.py
        folder1/
            file1.txt

我正在 moduleX.py 中导入一个来自 moduleZ.py 的函数,它需要存储在 file1.txt 中的信息才能工作。我从 moduleZ.py 导入函数没有问题,但是因为它需要 file1.txt,所以我收到错误消息 "No such file or directory"。

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

我想让它使用相对路径,但我找不到让它工作的方法。

提前致谢。

您是否尝试过在 moduleZ.py 中放置类似的东西来获取您当前所在的路径,然后从您生成的变量中获取相对路径?

import os
mypath = os.path.dirname(__file__)
txtfile = os.path.join(mypath,folder1,file1.txt)

My question is: When the function from moduleZ.py tries to open file1.txt after being imported which path does it consider?

它考虑从 person/process 运行 代码的工作目录开始的相对路径。

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

DIRNAME = os.path.dirname(__file__)

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

from package import DIRNAME
file1_txt = os.path.join(DIRNAME, 'subpackage2', 'folder1', 'file1.txt')