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 ex1或from 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)