1

我有一个科学计算项目,我正在运行一个分析并希望一些数据与python模块保持一致。我希望这些数据可以在几个例子中使用。导入存储在python模块中的csv数据

项目文件夹层次结构如下所示:

~/parent/ 
    setup.py 
    setupegg.py 
    /project 
     __init__.py 
     core.py 
     /data 
      __init__.py 
      load_data.py 
      somedata.csv 
     /examples 
      __init__.py 
      ex1.py 

我已经运行python setupegg.py develop从项目主文件夹,所以这个包是从我的电脑上的任何地方可导入。这工作到目前为止。

文件load_data.py看起来是这样的:

import pandas as pd 
df = pd.read_csv("somedata.csv") 

和文件ex1.py看起来是这样的:

from test_module.data.load_data import df 
def run(): 
    print df 

但现在当我运行from project.examples import ex1from project.data import load_data我收到一个IOError消息说“somedata。 csv'不存在。

如果我添加这数据/ load_data.py文件

import os 
print os.listdir('./') 

的序言它打印出的文件/文件夹的我是从工作目录列表。

当然,如果我使用数据绝对路径名,那么它将完美加载。如何调整导入语句以便读取数据文件夹中的csv文件不使用绝对路径名?

回答

8

如果CSV是在同一个目录中打开它,那么你可以尝试使用__file__属性的模块:

import os 
import pandas as pd 
df = pd.read_csv(os.path.join(os.path.dirname(__file__), "somedata.csv"))