访问" local"中的文件的python模块目录

时间:2017-07-11 23:56:31

标签: python

我有一个简单的问题。 我有一个python模块" dev1.py"需要一个文件" dev1_blob"

如果我在一个目录中拥有所有内容。 my_app像

一样加载dev1
from dev1 import func1

它工作正常。 我想将dev1.py移动到目录" ./ dev_files"其中包含 init .py。我可以将dev1.py加载为

from dev_files.dev1 import func1

然而,当func1运行以访问" device_blob" - 它barfs as:

  resource not found ..

这是基本的,我相信我错过了一些东西。 我无法弄清楚为什么python的伟大思想希望所有内容都引用__file__(cwd)并迫使我根据它的运行位置来修改dev1.py。即在dev1.py中将文件称为:'dev_files/device_blob'

我可以通过这种方式工作,但这是编写代码的纯粹荒谬方式。 有没有一种简单的方法可以访问模块文件旁边的文件或下面的树?

1 个答案:

答案 0 :(得分:1)

相对路径是Python的一个更大的缺陷。

对于此用例,您可以先调用open('../dev_files/device_blob')返回目录。

我的一般解决方案是拥有一个" project.py"包含项目目录的绝对路径的文件。然后我拨打open(os.path.join(PROJECT_DIR, 'dev_files', 'device_blob'))