python-yml文件读写

本文介绍了如何使用Python的PyYAML库操作config.yml文件,包括读取配置、插入数据、更新内容,并展示了相关函数的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用库 :import yaml

安装:pip install pyyaml

示例:

文件config2.yml

guard_url : 'https://www.xxxx.com'
app :
  chrome_files : 'C:\Program Files\Google\Chrome\Application\chrome.exe'
networkTime : 30
title : '公司'

读取yml数据

def read_yml(file):
    """读取yml,传入文件路径file"""
    f = open(file,'r',encoding="utf-8")   # 读取文件
    yml_config = yaml.load(f,Loader=yaml.FullLoader)    # Loader为了更加安全
   
    """Loader的几种加载方式
    BaseLoader - -仅加载最基本的YAML
    SafeLoader - -安全地加载YAML语言的子集。建议用于加载不受信任的输入。
    FullLoader - -加载完整的YAML语言。避免任意代码执行。这是当前(PyYAML5.1)默认加载器调用yaml.load(input)(发出警告后)。
 	UnsafeLoader - -(也称为Loader向后兼容性)原始的Loader代码,可以通过不受信任的数据输入轻松利用。"""
 	return yml_config
 

打印yml内容

yml_info=read_yml('config.yml')
print(yml_info['guard_url'])
print(yml_info['app'])
print((yml_info['app'])['chrome_files'])

"""
https:xxxx.com
{'chrome_files': 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'}
C:\Program Files\Google\Chrome\Application\chrome.exe
"""

插入到yml数据

def write_yml(file,data):
    # 写入数据:
    with open(file, "a",encoding='utf-8') as f:
        # data数据中有汉字时,加上:encoding='utf-8',allow_unicode=True
        f.write('\n')  # 插入到下一行
        yaml.dump(data, f, encoding='utf-8', allow_unicode=True)

data = {"S_data": {"test1": "hello"}, "Sdata2": {"name": "汉字"}}
write_yml('config2.yml',data=data)

在这里插入图片描述
更新yml的数值
逻辑是完整读取然后更新数值后在完整写入。

def read_yml(file):
    """读取yml,传入文件路径file"""
    f = open(file, 'r', encoding="utf-8")  # 读取文件
    yml_config = yaml.load(f, Loader=yaml.FullLoader)  # Loader为了更加安全
    return yml_config
def updata_yaml(file):
	"""更新yml的数值"""
    old_data=read_yml(file) #读取文件数据
    old_data['title']='仔仔大哥哥' #修改读取的数据(
    with open(file, "w", encoding="utf-8") as f:
        yaml.dump(old_data,f,encoding='utf-8', allow_unicode=True)
updata_yaml('config2.yml')

在这里插入图片描述

<think>嗯,用户想了解如何在Python中进行YAML文件读写操作,需要示例。我之前看过几个相关的引用,里面提到了使用PyYAML库,特别是safe_load和dump方法。先确认用户需要的是基本操作,包括读取和写入,可能还有修改。 首先,我需要整理读取YAML的步骤。引用1和4都提到了用yaml.safe_load()来读取文件,这样可以避免安全风险。示例代码应该展示如何打开文件并用safe_load解析成Python数据结构,比如字典或列表。然后,写入部分的话,引用3和5提到使用yaml.dump(),同时要注意文件模式是'w'还是'a',前者覆盖,后者追加。需要示例展示写入和追加的不同情况。 接下来是修改YAML文件,引用3里的方法是通过读取数据,修改后再写回。这需要先读取整个文件,修改对应的键值,然后用'w'模式重新写入。这可能涉及到多个步骤,需要分步说明。 还要注意安装PyYAML库,用户可能需要先安装才能运行示例。所以应该在回答开头提到安装命令pip install pyyaml。 然后,用户的问题可能需要具体的代码示例,所以每个步骤都要有对应的代码块。比如读取、写入、追加、修改各一个示例。同时,需要解释每个步骤的作用,比如safe_load和dump的区别,文件模式的注意事项。 另外,引用5提到在Python不同版本下CSV读取的差异,但可能和YAML关系不大,可以忽略。引用3详细说明了修改数据的方法,这部分需要重点参考,给出修改的示例代码。 最后,确保回答结构清晰,分点说明,每个部分有代码和解释。可能还需要在相关问题里提示安装问题、数据安全、复杂结构处理等。要检查是否有遗漏的步骤,比如异常处理,但用户可能只需要基础操作,所以暂时不提高级内容。 总结一下,回答的结构应该是:安装库、读取示例、写入示例、追加示例、修改示例,然后相关问题。每个代码块用正确的格式,并解释关键点,比如safe_load的好处,文件模式的区别。确保引用正确的来源,比如引用1和3的信息。</think>在Python中处理YAML文件主要通过`PyYAML`库实现,以下是完整的操作指南: ### 一、环境准备 ```bash pip install pyyaml # 安装PyYAML库 ``` ### 二、YAML文件读取 读取示例文件`config.yml`: ```yaml # config.yml 内容示例 database: host: localhost port: 3306 user: root ``` Python读取代码: ```python import yaml with open('config.yml', 'r') as file: data = yaml.safe_load(file) # 安全加载方法避免代码注入风险[^1] print(data['database']['host']) # 输出: localhost ``` ### 三、YAML文件写入 #### 1. 覆盖写入新数据 ```python config = { 'debug_mode': True, 'log_level': 'INFO' } with open('settings.yml', 'w') as file: yaml.dump(config, file, sort_keys=False) # sort_keys=False保持字典顺序[^5] ``` #### 2. 追加写入数据 ```python new_settings = {'max_connections': 100} with open('settings.yml', 'a') as file: # 使用追加模式 yaml.dump(new_settings, file) ``` ### 四、YAML文件修改 修改现有YAML文件的典型流程: ```python def update_yaml(key, value): with open('config.yml', 'r') as file: data = yaml.safe_load(file) # 读取原始数据[^4] data[key] = value # 修改数据 with open('config.yml', 'w') as file: yaml.dump(data, file) # 重新写入完整数据[^3] update_yaml('port', 5432) # 修改数据库端口 ``` ### 五、处理复杂结构 YAML支持嵌套数据结构: ```yaml # 复杂结构示例 server: clusters: - name: cluster1 nodes: 3 - name: cluster2 nodes: 5 ``` 对应Python操作: ```python data = { 'server': { 'clusters': [ {'name': 'cluster1', 'nodes': 3}, {'name': 'cluster2', 'nodes': 5} ] } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值