gpt4 book ai didi

python - 写入 yaml 文件 : attribute error

转载 作者:太空宇宙 更新时间:2023-11-04 02:34:19 25 4
gpt4 key购买 nike

我正在尝试读取一个 yaml 文件,替换它的一部分并将结果写入同一个文件,但是我得到一个属性错误。

代码

import yaml
import glob
import re
from yaml import load, dump
from yaml import CLoader as Loader, CDumper as Dumper
import io

list_paths = glob.glob("my_path/*.yaml")

for path in list_paths:
with open(path, 'r') as stream:
try:
text = load(stream, Loader=Loader)
text = str(text)
print text
if "my_string" in text:
start = "'my_string': '"
end = "'"
m = re.compile(r'%s.*?%s' % (start,end),re.S)
m = m.search(text).group(0)
text[m] = "'my_string': 'this is my string'"
except yaml.YAMLError as exc:
print(exc)
with io.open(path, 'w', encoding = 'utf8') as outfile:
yaml.dump(text, path, default_flow_style=False, allow_unicode=True)

错误我在 yaml_dump

收到此错误
AttributeError: 'str' object has no attribute 'write' 

到目前为止我尝试了什么

  • 没有将文本转换为字符串,但随后我在 m.search 行收到错误:

    TypeError:预期的字符串或缓冲区

  • 首先转换为字符串,然后再次转换为 dict,但是我从代码 text: dict(text) 得到这个错误:ValueError:字典更新序列元素 #0 的长度为 1; 2 是必需的

Yaml 文件

my string: something
string2: something else

预期结果:yaml 文件

my string: this is my string
string2: something else

最佳答案

要停止出现该错误,您需要做的就是更改

with io.open(path, 'w', encoding = 'utf8') as outfile:
yaml.dump(text, path, default_flow_style=False, allow_unicode=True)

with open(path, 'w') as outfile:
yaml.dump(text.encode("UTF-8"), outfile, default_flow_style=False, allow_unicode=True)

正如其他答案所说,此解决方案只是将字符串 path 替换为打开的文件描述符。

关于python - 写入 yaml 文件 : attribute error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48298074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com