Yaml 文件操作及相关异常

Yaml 文件操作

1.创建一个yaml文件,名称为“new1.yml”,内容如下:

name: jack1
age: 23
children:
   name_1: jason1
   age_1: 2
   name_2: Jeff
   AGE_2: 4

2.org.yaml.snakeyaml.scanner.ScannerException: while scanning a simple key解决方案

报这个错误是因为.yml

如果name:jack1的键值如果没有用: 空格把键值分开,就会报这个错

解决方案:空格把键值分开

如:name: jack1

3.读取YMAL文件的prthon代码如下:

import yaml
f=open(r'C:\Users\huashuo\Desktop\new1.yml')
y=yaml.load(f)
print(y)
print(type(y))

运行结果如下:

4. 对于如下异常:

YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  y=yaml.load(f)

解决方法:

yaml.load(list, Loader=yaml.FullLoader) 加上 Loader=yaml.FullLoader 就行

import yaml
f=open(r'C:\Users\huashuo\Desktop\new1.yml')
y=yaml.load(f,Loader=yaml.FullLoader)
print(y)
print(type(y))

运行结果如下:

 

ROS 2(Robot Operating System)是一个开源的机器人操作系统,它支持分布式、模块化和异步的系统设计。在ROS 2中,YAML(Yet Another Markup Language)通常用于配置文件,如参数服务器中的参数设置或launch文件中的启动信息。 要从程序内部读取并修改 YAML 文件的内容,你可以使用 Python 库 `rclpy_yaml_param_parser` 和 `yaml` 库。这里是一个简化的步骤: 1. 安装必要的库: ```sh pip install rclpy yaml ``` 2. 在代码中读取 YAML 文件: ```python import yaml from rclpy.node import Node class AppConfigNode(Node): def __init__(self): super().__init__('app_config_node') self.config_file = 'config.yaml' with open(self.config_file, 'r') as stream: try: self.config_data = yaml.safe_load(stream) except yaml.YAMLError as exc: self.get_logger().error('Failed to load config file: %s', str(exc)) # 在节点初始化后,你可以访问 config_data 变量 ``` 3. 修改 YAML 内容: ```python def update_config_value(key, new_value): if key in self.config_data: self.config_data[key] = new_value else: self.get_logger().warn('Key "%s" not found in the configuration', key) # 在需要的地方调用 update_config_value 函数来更新值 update_config_value('param_name', 'new_value') 4. 保存修改后的文件: ```python with open(self.config_file, 'w') as stream: yaml.safe_dump(self.config_data, stream, default_flow_style=False) ``` 记得在实际应用中处理异常,并确保有足够的权限来写入文件,特别是在运行受限的环境中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值