ValueError: 二进制模式不接受编码参数
ValueError: binary mode doesn’t take an encoding argument
rb
当我们以二进制模式(或wb
)打开文件并设置关键字参数时,会出现 Python“ValueError: binary mode doesn’t take an encoding argument” encoding
。
r
要解决该错误,请以文本模式(或w
)打开文件或删除encoding
关键字参数。
下面是错误如何发生的示例。
主程序
# ⛔️ ValueError: binary mode doesn't take an encoding argument with open('example.txt', 'rb', encoding='utf-8') as f: result = f.readlines() print(result)
rb
我们以(读取二进制)模式而不是r
(读取文本)模式打开文件,并设置encoding
导致错误的关键字参数。
wb
如果您以(写入二进制)模式而不是w
(写入文本)模式打开文件,情况也是如此。
读取或写入二进制文件
如果您正在读取或写入二进制文件,请保留模式并删除
编码关键字参数。
主程序
with open('example.txt', 'rb') as f: result = f.readlines() print(result)
关键字
encoding
参数仅在读取和写入文本文件时相关。读取或写入文本文件
如果您正在读取或写入文本文件,请b
从模式中删除字符并设置encoding
关键字参数。
主程序
with open('example.txt', 'r', encoding='utf-8') as f: result = f.readlines() print(result)
w
如果写入文本文件,则可以使用该模式。
当以文本模式打开文件时,我们从文件读取字符串或向文件写入字符串。
这些字符串使用特定的编码(utf-8
在示例中)进行编码。
请注意,如果您没有显式设置
encoding
关键字参数,则默认值取决于平台。如果你想同时读取和写入文件,请r+
在打开文件时使用模式。
如果将 a 附加
b
到模式(如在第一个代码片段中),文件将以二进制模式打开。encoding
请注意,以二进制模式打开文件时不能指定。
当以二进制模式打开文件时,数据将作为bytes
对象进行读取和写入。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: