PyYAML YAML加载所有对象(很好)

2024-06-12 13:50:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下Python:

class Instrument:
    def quandl_get(self):
        return quandl.get(self.quandl)

def yaml_load_all(name):
    with open('yaml/' + str(name) + '.yaml', 'r') as ymlfile:
        return list(yaml.load_all(ymlfile))

instruments = yaml_load_all("instruments")

以及以下山药:

^{pr2}$

我想要的是一个乐器的口述,这样我就可以做instruments['vstoxx'].quandl_get()。在

作为奖励,我不想每次在YAML文件中重复!!python/object:v.Instrument。在

目前我得到了一份仪器清单。我想我需要做两个步骤,将对象加载到一个列表中,然后将它们映射到dict。这真的是最干净的方法吗?在


Tags: nameselfyamlgetreturndefwithload
1条回答
网友
1楼 · 发布于 2024-06-12 13:50:32

如果您在文件中使用load_all和多个文档(这是通过使用 -)来实现的,则始终会得到一个单独数据元素的列表。在

您可以将YAML文件更改为:

!!python/object:v.Instruments
vstoxx:
    fractional_contracts: False
    multiplier: 100
    slippage: 0.0017
    per_contract_cost: 0.0211
    quandl: 'CHRIS/EUREX_FVS1'
corn:
    multiplier: 5000
    symbol: 'zc'
    months_traded: [3, 5, 7, 9, 12]
    quandl: 'CHRIS/CME_C2'
    forecasts: ['ewmac']

(请不要在topline的末尾包含一个s),然后实现一个类Instruments,该类在加载YAML时创建单独的Instrument实例并填充它们,并具有存储键值对的属性self._lookup(值是Instrument的实例)。然后在Instruments上创建:

^{pr2}$

相关问题 更多 >