使用yaml.dump转储字典不会在python3中使用“with open()”将特殊字符写入文件

2024-10-04 07:32:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想将字典转储到YAML文件中,但我的umlauts被弄乱了

代码如下:

import ruamel.yaml

yaml = ruamel.yaml.YAML()
dictUsed = 'Testdurchführung'

with open(r'C:\Users\somepath', 'w') as outfile:
    yaml.dump(dictUsed, stream=outfile)

例如,输出为:

Testdurchf�hrung

我希望文件中的ouptut如下所示:

Testdurchführung

但是,当我使用它时,它会起作用:

import sys
import ruamel.yaml

yaml = ruamel.yaml.YAML()
yaml.dump(dictUsed, sys.stdout)

控制台的输出为:

Testdurchführung

我怎样才能解决这个问题


Tags: 文件代码importyaml字典withsysruamel
1条回答
网友
1楼 · 发布于 2024-10-04 07:32:26

在Windows上使用'w'打开文件时,它将写入一个文本文件,但ruamel.yaml在默认情况下写入一个二进制UTF-8编码文件

在正常工作的sys.stdout上(除非您的终端不支持UTF-8),因此您看不到问题所在

您可以使用以下方法打开文件进行输出:

with open(r'C:\Users\somepath', 'wb') as outfile:

或者使用pathlib.Path实例:

import pathlib
p = pathlib.Path(r'C:\Users\somepath')
yaml.dump(dictUsed, p)

相关问题 更多 >