Python 从同一文件夹访问资源
我的Python 3.6应用程序具有以下结构: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
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'),您需要使用我今天将问题提交给团队。让我们看看每个人都要说些什么。谢谢你的回答