【发布时间】:2018-11-30 15:55:18
【问题描述】:
最近几天我一直在学习如何构建数据科学项目,以使其保持简单、可重用和 Python 风格。坚持this guideline 我已经创建了my_project。你可以在下面看到它的结构。
├── README.md
├── data
│ ├── processed <-- data files
│ └── raw
├── notebooks
| └── notebook_1
├── setup.py
|
├── settings.py <-- settings file
└── src
├── __init__.py
│
└── data
└── get_data.py <-- script
我定义了一个从.data/processed 加载数据的函数。我想在其他脚本以及 .notebooks 中的 jupyter 笔记本中使用此功能。
def data_sample(code=None):
df = pd.read_parquet('../../data/processed/my_data')
if not code:
code = random.choice(df.code.unique())
df = df[df.code == code].sort_values('Date')
return df
显然,除非我直接在定义它的脚本中运行它,否则这个函数在任何地方都不起作用。
我的想法是在我声明的地方创建settings.py:
from os.path import join, dirname
DATA_DIR = join(dirname(__file__), 'data', 'processed')
所以现在我可以写了:
from my_project import settings
import os
def data_sample(code=None):
file_path = os.path.join(settings.DATA_DIR, 'my_data')
df = pd.read_parquet(file_path)
if not code:
code = random.choice(df.code.unique())
df = df[df.code == code].sort_values('Date')
return df
问题:
以这种方式引用文件是常见的做法吗?
settings.DATA_DIR看起来有点丑。这到底是应该如何使用
settings.py?它应该放在这个目录中吗?我在repo.samr/settings.py下的不同位置看到它
我知道可能没有“一个正确的答案”,我只是试图找到处理这些事情的合乎逻辑、优雅的方式。
【问题讨论】:
-
请不要将问题帖用作放置 cmets 的地方。 Stack Overflow 不像论坛。我们希望构建问题及其答案,以便未来的访问者可以快速查看他们是否有同样的问题,并且答案也适用于他们的情况。他们不会关心这个过程最终是如何得出这些答案的;关于答案的对话应该留给 cmets。
-
罗杰,我会在以后的问题中坚持下去。
标签: python python-3.x setuptools directory-structure