从另一个目录导入时打开相对路径

时间:2015-12-13 20:46:15

标签: python python-2.7 io

说我有像

这样的文件结构
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独立工作以及从另一个目录导入时,我该如何解决这个问题呢?

1 个答案:

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