Closed yasu80 closed 6 years ago
例えばこんな感じでバーっと取り出してきたとして,
yasu17@mobile:~/workspace/robots/fifth_robot_pkg/src/yaml_reader/src$ python Python 2.7.12 (default, Nov 19 2016, 06:48:10) [GCC 5.4.0 20160609] on linux2 Type "help", "copyright", "credits" or "license" for more information. f = open('waypoint.yaml' , 'r') print(f) open file 'waypoint.yaml', mode 'r' at 0x7f5bcbea9540> data = yaml.load(f) raceback (most recent call last): File "<stdin>", line 1, in <module> ameError: name 'yaml' is not defined import yaml data = yaml.load(f) print(data) [{'level_acculate': 1.0, 'name': 'start', 'y': 10.0, 'x': 10.0, 'type': 'passing', 'level_alert': 3}, {'level_acculate': 0.5, 'name': 'gate', 'y': 10.0, 'x': 20.0, 'type': 'gate', 'level_alert': 5}, {'y': 15.0, 'x': 25.0, 'radius': 0.5, 'level_alert': 5}, {'y': 30.0, 'x': 30.0}, {'flag': 'finish', 'radius': 0.5, 'name': 'goal', 'y': 20, 'x': 20, 'inportance': 4}] >
これをブロック番号( 中括弧{}の順番 ) + 中カッコ内キー名のみで参照したい. 確かにインデックスに, 例えばNoみたいなキーを追加してオリジナルな番号が触れ_れば_いいんですけれど, 多分現場で番号を一個中抜きして一個増やしてとか悪夢なのでしません.
ダーティなコードになりますけど, 頭に使わないインデックスを一個追加して
wps: - number: 0 name: start x: 10 y: 10 inportance: 1 radius: 1.5 drag: 5 - number: 1 name: gate x: 10 y: 20 inportance: 2 radius: 2.5 drag: 3
に対して
#!/usr/bin/env python # coding UTF-8 import yaml import rospy from std_msgs.msg import String FILEIN_DICT = "waypoint.yaml"#Rename! f = open(FILEIN_DICT, 'r') waypoints = yaml.load(f) f.close() def checkImportance(): if waypoints["wps"][0]["inportance"] == 1:
的な参照も一応可能だが・・・ cecd71864d5d2f527da8f060515f0eaeb949b2c0 PYYAMLのサンプルとか参考文献とか少なすぎて蛇生えますよ
とりあえず汚い方法で実装します. 辞書型への理解みが浅いのが原因なんですけど
全然時間が足りませんでしたが, これもそのうち実装します 構成を再度変更するときにここを参照します
例えばこんな感じでバーっと取り出してきたとして,
これをブロック番号( 中括弧{}の順番 ) + 中カッコ内キー名のみで参照したい. 確かにインデックスに, 例えばNoみたいなキーを追加してオリジナルな番号が触れ_れば_いいんですけれど, 多分現場で番号を一個中抜きして一個増やしてとか悪夢なのでしません.
ダーティなコードになりますけど, 頭に使わないインデックスを一個追加して
に対して
的な参照も一応可能だが・・・ cecd71864d5d2f527da8f060515f0eaeb949b2c0 PYYAMLのサンプルとか参考文献とか少なすぎて蛇生えますよ