说我有一个类似的文件结构
a
__init__.py
a.py
a.txt
b.py
现在,假设a/a.py
看起来像:
print open("a.txt").read()
也许b.py
说:
from a import a
我遇到了一些类似代码的问题。我运行b.py
,它似乎在寻找相对于自身的a.txt
,而不是相对于a.py
。如果我想让a.py
独立工作,以及从另一个目录导入时,我该如何解决这个问题?
您可以使用其绝对路径打开a.txt
。像这样编辑a.py
:
import os
base = os.path.dirname(os.path.abspath(__file__))
path = os.path.join(base, 'a.txt')
print open(path).read()
当您调用open('a.txt')
时,python解释器将在当前工作目录中查找,该目录通常是您调用解释器的地方。
调用os.path.abspatch(__file__)
将获得当前文件的绝对路径,在您的情况下为a.py
。在os.path.dirname()
中封装它将为您提供当前文件的目录的绝对路径。