Python无法打开导入包上的文件

Python无法打开导入包上的文件,python,file-io,import,Python,File Io,Import,我有以下文件夹结构 application/app/src/app.py application/app/data/test.py 应用程序导入测试,并成功运行,但在test.py中,我想打开一个名为“dummy.txt”的文件 运行app.py时,出现以下错误: No such file or directory: 'dummy.txt' 我假设它是因为我的sys.path位于src文件夹中,但是当我尝试以下操作时: TARGET_DIR_NAME = 'data' sys.path.ap

我有以下文件夹结构

application/app/src/app.py
application/app/data/test.py
应用程序导入测试,并成功运行,但在test.py中,我想打开一个名为“dummy.txt”的文件

运行app.py时,出现以下错误:

No such file or directory: 'dummy.txt'
我假设它是因为我的sys.path位于src文件夹中,但是当我尝试以下操作时:

TARGET_DIR_NAME = 'data'
sys.path.append('../'+TARGET_DIR_NAME)
print(sys.path[0])
print(dirname(sys.path[0]))
sys.path[0] = dirname(sys.path[0])+'/'+TARGET_DIR_NAME
它会将其更改为数据文件夹,但仍然无法打开。感谢您的帮助


我使用的是python 3.4.3

最好的方法是定义一些
实用工具
模块,它根据基本路径为您提供路径,如下所示:

 import os
 from PathUtil import get_data_path

 dummy_file_path = os.path.join(get_data_path(), 'dummy.txt')
PathUtil.py
可以是
src
文件夹中的一个模块。然后,你将从那里计算你的路径

import os

base_path = os.path.abspath(os.path.dirname(__file__))

def get_data_path(self):
    data_dir = os.path.join(base_path, "data" + os.sep)
    return data_dir
现在,在您的文件中,您可以按如下方式导入:

 import os
 from PathUtil import get_data_path

 dummy_file_path = os.path.join(get_data_path(), 'dummy.txt')

最好的方法是定义一些
实用程序
模块,该模块根据基本路径为您提供路径,如下所示:

 import os
 from PathUtil import get_data_path

 dummy_file_path = os.path.join(get_data_path(), 'dummy.txt')
PathUtil.py
可以是
src
文件夹中的一个模块。然后,你将从那里计算你的路径

import os

base_path = os.path.abspath(os.path.dirname(__file__))

def get_data_path(self):
    data_dir = os.path.join(base_path, "data" + os.sep)
    return data_dir
现在,在您的文件中,您可以按如下方式导入:

 import os
 from PathUtil import get_data_path

 dummy_file_path = os.path.join(get_data_path(), 'dummy.txt')

我怎么用这个?例如,在test.py当前所在的:from sklearn.externals import joblib from sklearn.tree import decisiontreeclassier clf=joblib.load('dummy.txt')中,您可以在任何地方导入实用程序文件并获取文本文件。我如何使用它?例如,在test.py当前所在的:from sklearn.externals import joblib from sklearn.tree import decisiontreeclassier clf=joblib.load('dummy.txt')中,您可以在任何地方导入实用程序文件并获取文本文件。