导入存储在 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 ex1
或 from 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"))
我有一个科学计算项目,我正在对其进行 运行 分析,并希望将一些数据保存在 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 ex1
或 from 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"))