Python 从同一文件夹访问资源

Python 从同一文件夹访问资源,python,python-3.6,Python,Python 3.6,我的Python 3.6应用程序具有以下结构: app/ |__ utility.py |__ resource.txt |__ notebooks/ |__ sandbox.ipynb 在utility.py中,我有一个读取资源文件的函数: # utility.py def do_something(): with open('resource.txt') as f: content = f.read() 一切都很好 问题是,当我在s

我的Python 3.6应用程序具有以下结构:

app/
|__ utility.py
|__ resource.txt
|__ notebooks/
    |__ sandbox.ipynb
      
utility.py
中,我有一个读取资源文件的函数:

# utility.py
def do_something():
    with open('resource.txt') as f:
        content = f.read()
    
一切都很好

问题是,当我在
sandbox.ipynb
中导入实用程序时,该函数失败,因为它找不到
notebooks
文件夹下的
resource.txt
文件:

# sandbox.ipynb
import sys
if '..' not in sys.path
    sys.path.append('..')

from utility import do_something # ok
do_something() # resource.txt not found

什么是Pythonic方式使
dou\u某事
始终从
resource.txt
文件中读取,该文件与
utility.py
位于同一文件夹中?我公司的一位高级开发人员不鼓励使用
\uuuuu file\uuuu
,因为它可能指向zip包的错误位置。这是真的吗?

您可以获得正在执行的文件的目录,如下所示:

导入操作系统
dir_path=os.path.dirname(os.path.realpath(_文件__))
resource\u filepath=os.path.join(dir\u path,'resource.txt')
定义做某事():
将open(resource_filepath)作为f:
content=f.read()

谢谢您的回答。高级开发人员说,如果包是zip文件,那么
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
将无法工作。在这种情况下,
文件将指向zip文件,而不是
utility.py的绝对路径。您对此有何看法?那么,您的包是否在zip存档中?如果不是,则您需要的是
\uuu文件。如果它在zip文件中,那么这是一种完全不同的方法,您不能使用
open
方法从zip存档中读取文件('resource.txt'),您需要使用我今天将问题提交给团队。让我们看看每个人都要说些什么。谢谢你的回答