说我有像
这样的文件结构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
独立工作以及从另一个目录导入时,我该如何解决这个问题呢?
答案 0 :(得分:3)
您可以使用其绝对路径打开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()
中将为您提供当前文件目录的绝对路径。