python - 如何使用 sys.path.append 在 python 中导入文件?

标签 python python-2.7 relative-path filepath sys

我的桌面上有两个目录,DIR1DIR2,其中包含以下文件:

DIR1:
file1.py

DIR2:
file2.py  myfile.txt

文件包含以下内容:

文件1.py

import sys

sys.path.append('.')
sys.path.append('../DIR2')

import file2

文件2.py

import sys

sys.path.append( '.' )
sys.path.append( '../DIR2' )

MY_FILE = "myfile.txt"

myfile = open(MY_FILE) 

我的文件.txt

some text

现在,有两种情况。第一个有效,第二个给出错误。

场景一

cd 进入 DIR2 并运行 file2.py 并且它运行没有问题。

场景2

cd 进入 DIR1 并运行 file1.py 并抛出错误:

Traceback (most recent call last):
  File "<absolute-path>/DIR1/file1.py", line 6, in <module>
    import file2
  File "../DIR2/file2.py", line 9, in <module>
    myfile = open(MY_FILE)
IOError: [Errno 2] No such file or directory: 'myfile.txt'

但是,这对我来说毫无意义,因为我已经使用命令 sys.path.append('../DIR2')file1.py.

为什么当 file1.pyfile2.pymyfile.txt 位于同一目录时会发生这种情况,但它会抛出一个错误?谢谢你。

最佳答案

您可以使用模块的 __file__ 属性创建相对于模块的路径。例如:

myfile = open(os.path.join(
    os.path.dirname(__file__),
    MY_FILE))

无论您从哪里开始脚本,这都应该做您想要的。

关于python - 如何使用 sys.path.append 在 python 中导入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32239372/

相关文章:

python - sklearn 聚类 : Fastest way to determine optimal number of cluster on large data sets

python - 马赫制表符或行首 8 个空格

python - Selenium 上的图像/文件上传

python - 使用代码存储库时如何引用资源的相对路径

python - 为什么我们在 python 中放置一个 main() 函数,而不是直接将代码放在 "name == main"子句中?

python - 创建后如何修改matplotlib图例?

python - Pandas 不进口吗? 'NameError: global name ' pandas'未定义'

python - 用列表填充二维数组

java - Eclipse 项目无法使用相对路径引用文件

php - 冲突包括具有相对路径的文件