python读取yaml文件

需要用python读取yaml文件,在这里记录一下:

使用

安装并导入pyyaml模块

pip install pyyaml
import yaml

yaml文件格式如下:

#Default imu sensor yaml file
sensor_type: imu
comment: VI-Sensor IMU (ADIS16448)

# Sensor extrinsics wrt. the body-frame.
T_BS:
  cols: 4
  rows: 4
  data: [1.0, 0.0, 0.0, 0.0,
         0.0, 1.0, 0.0, 0.0,
         0.0, 0.0, 1.0, 0.0,
         0.0, 0.0, 0.0, 1.0]
rate_hz: 200

# inertial sensor noise model parameters (static)
gyroscope_noise_density: 1.6968e-04     # [ rad / s / sqrt(Hz) ]   ( gyro "white noise" )
gyroscope_random_walk: 1.9393e-05       # [ rad / s^2 / sqrt(Hz) ] ( gyro bias diffusion )
accelerometer_noise_density: 2.0000e-3  # [ m / s^2 / sqrt(Hz) ]   ( accel "white noise" )
accelerometer_random_walk: 3.0000e-3    # [ m / s^3 / sqrt(Hz) ].  ( accel bias diffusion )

指令很简单,只需要加入yaml读取:

def yaml_read(yaml_file):
        with open(yaml_file) as f:
            yaml_reader = yaml.load(f.read(), Loader=yaml.FullLoader)
        return yaml_reader

最后打印出结果,可以看出结果按照关键字检索,#注释内容不会读取,同时对于多行矩阵,按照括号范围进行读取

{'sensor_type': 'imu', 
'comment': 'VI-Sensor IMU (ADIS16448)', 
'T_BS': {'cols': 4, 'rows': 4, 'data': [1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0]},
'rate_hz': 200, 
'gyroscope_noise_density': 0.00016968, 
'gyroscope_random_walk': 1.9393e-05, 
'accelerometer_noise_density': 0.002, 
'accelerometer_random_walk': 0.003}

报错处理

注意!!!
一开始未加入Loader=yaml.FullLoader会报错TypeError: load() missing 1 required positional argument: ‘Loader’

yaml.load(f.read())

查阅资料发现YAML 5.1版本后弃用了yaml.load(file),必须指定Loader

d1=yaml.load(file,Loader=yaml.FullLoader) #禁止执行任意函数
d1=yaml.safe_load(file)
d1 = yaml.load(file, Loader=yaml.CLoader)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值