导入存储在 python 模块中的 csv 数据

Importing csv data stored in a python module

我有一个科学计算项目,我正在对其进行 运行 分析,并希望将一些数据保存在 python 模块中。我希望数据为 'importable',以便在几个示例中使用。

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

~/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' 不存在。

如果我将其添加到 data/load_data.py 文件的序言中

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

它在我工作的目录中打印 files/folder 的列表。

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

如果 csv 与打开它的模块位于同一目录中,那么您可以尝试使用 __file__ 属性:

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