从其他目录导入时打开相对路径



说我有一个类似的文件结构

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()中封装它将为您提供当前文件的目录的绝对路径。

最新更新