3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個(gè)贊
我會(huì)將 YAML 文件更改為:
ToPrint:
var: something
Code: print("{var}".format(**d['ToPrint']))
并且由于您使用的是 Python3 還使用Path:
import sys
import ruamel.yaml
from pathlib import Path
yaml = ruamel.yaml.YAML()
d = yaml.load(Path('file.yaml'))
eval(d['Code'])
這使:
something
請(qǐng)注意,變量d 必須與值中的相同Code
使用{{var}}看起來(lái)更像是一個(gè)(jinja2)模板。你不能直接評(píng)估那些,你需要擴(kuò)展模板然后全部評(píng)估。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以ToPrint在eval以下位置用作局部變量:
with open("file.yaml", "r") as file:
yaml_ = yaml.load(file)
eval(yaml_['Code'], yaml_['ToPrint'])
和 yaml 文件:
ToPrint:
var: something
Code: print(f"{var}")

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
擴(kuò)展丹尼爾的回答:
yaml 文件:
Const:
c1: 10
c2: 20
Expression: var1 * var2 + c1 / c2
代碼:
import yaml
with open("formula.yaml", "r") as file:
yaml_ = yaml.load(file)
res = eval(yaml_['Expression'],
{'var1':4, 'var2':2},
yaml_['Const'])
print(res)
添加回答
舉報(bào)