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

p-r*_*bot 3 python relative-path scientific-computing python-import pandas

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

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

~/parent/
    setup.py
    setupegg.py
    /project
        __init__.py
        core.py
        /data
            __init__.py
            load_data.py
            somedata.csv
        /examples
            __init__.py
            ex1.py
Run Code Online (Sandbox Code Playgroud)

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

该文件load_data.py如下所示:

import pandas as pd
df = pd.read_csv("somedata.csv")
Run Code Online (Sandbox Code Playgroud)

文件ex1.py看起来像这样:

from test_module.data.load_data import df
def run():
    print df
Run Code Online (Sandbox Code Playgroud)

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

如果我将它添加到data/load_data.py文件的前导码中

import os
print os.listdir('./')
Run Code Online (Sandbox Code Playgroud)

它打印我正在工作的目录中的文件/文件夹列表.

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

ACh*_*ion 10

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

import os
import pandas as pd
df = pd.read_csv(os.path.join(os.path.dirname(__file__), "somedata.csv"))
Run Code Online (Sandbox Code Playgroud)