从导入的函数打开文件
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')
我 "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')