从导入的函数打开文件

2024-05-18 09:39:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在Python中与绝对路径和相对路径“斗争”了一段时间,我知道在这个主题上有很多问题,但我找不到我的特定问题的答案

鉴于以下项目结构:

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

我正在moduleX.py中导入来自moduleZ.py的函数,该函数需要file1.txt中存储的信息才能工作。我从moduleZ.py导入函数没有问题,但是因为它需要file1.txt,我得到错误消息“没有这样的文件或目录”

我的问题是:当从{{< CD2>}的函数试图在导入后打开^ {< CD3>}时,它会考虑哪个路径?

我想让它以相对路径工作,但我找不到一种方法让它工作

提前谢谢


Tags: 项目函数答案pytxtpackage主题结构
2条回答

您是否尝试过在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?

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

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

DIRNAME = os.path.dirname(__file__)

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

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

相关问题 更多 >