关于python使用ruamel.yaml.dump写出的yaml文件注释丢失的原因?

新手小白自学python一星期,有被困扰到,烦请熟悉这方面踩过坑的大神指点迷津,感激不尽!
这是我的docker-compose1.yml文件

version: "3"
services:
  #xxx-service
  xxx-service:
  #测试0
  image: 192.168.0.0/xxx-service:v1.1.0
  restart: always
  #测试1
  hostname: xxx-service
  ports:
  #测试2
  #6379: 6379
  volumes:
  # 日志数据
    - /var/log/ABC/docker/xxx-service/logs:/logs
  # 拓扑导出导入配置文件
    - /etc/ABC/topology-templates:/etc/ABC/xxx/config/topology
  environment:
    #测试3
    SPRING_REDIS_HOST: redis
    #测试4
    SPRING_REDIS_DATABASE: 1
    #测试5

我的python代码,python版本3.7.1

# -*- coding: utf-8 -*-
#!/usr/bin/env python3
from ruamel import yaml
​
def up_yml():
 #读取docker-compose.yml文件
 with open('./docker-compose1.yml', 'r+', encoding="utf-8") as f:
 content = yaml.load(f, Loader=yaml.RoundTripLoader)
 #写入docker-compose.yml文件
 with open('./docker-compose2.yml', 'w+', encoding="utf-8") as nf:
 yaml.dump(content, nf,Dumper=yaml.RoundTripDumper,default_flow_style=False, allow_unicode=True, indent=2, block_seq_indent=2) 
if __name__ == '__main__':
 up_yml()

期待得到输出

version: "3"
services:
  #xxx-service
  xxx-service:
  #测试0
  image: 192.168.0.0/xxx-service:v1.1.0
  restart: always
  #测试1
  hostname: xxx-service
  ports:
  #测试2
  #6379: 6379
  volumes:
  # 日志数据
    - /var/log/ABC/docker/xxx-service/logs:/logs
  # 拓扑导出导入配置文件
    - /etc/ABC/topology-templates:/etc/ABC/xxx/config/topology
  environment:
    #测试3
    SPRING_REDIS_HOST: redis
    #测试4
    SPRING_REDIS_DATABASE: 1
    #测试5

实际的输出

version: "3"
services:
  #xxx-service
  xxx-service:
  #测试0
  image: 192.168.0.0/xxx-service:v1.1.0
  restart: always
  hostname: xxx-service
  ports:
  volumes:
  # 日志数据
    - /var/log/ABC/docker/xxx-service/logs:/logs
  # 拓扑导出导入配置文件
    - /etc/ABC/topology-templates:/etc/ABC/xxx/config/topology
  environment:
    #测试3
    SPRING_REDIS_HOST: redis
    SPRING_REDIS_DATABASE: 1

请问这是为什么?除了开头的那个#测试0的注释和vloumes里的注释保留,其他的丢失
我发现image、networks等同一级但是在xxx-service下的注释,仅有xxx-service下紧接着的注释能保留,其他的会丢失
请问有办法解决吗?网上看了很多帖子,几乎都是复制粘贴的同样内容,他们对于注释丢失的解决办法是使用:
ruamel.yaml.load(Loader=ruamel.yaml.RoundTripLoader)
ruamel.yaml.dump(Dumper=ruamel.yaml.RoundTripDumper)

讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!