> 美容
pytho二进制编码(pytho中的二进制以什么开头)
导语:Python中的二进制与编码
用python写数据到csv文件的时候遇到一个问题,运行时报错:
ValueError: binary mode doesn&39;utf-8&39;__main__&39;dddd&39;test.csv&39;ab&39;中使用’b&39;不能同时使用。因为调用的是函数,例子中是自己写的,两种方式都可以选择;而实际使用时,函数可能是库函数,也可能是别人写的,只能修改传入的参数。
修改后代码如下:
def output(outfile,data,mode): with open(outfile,mode,encoding=&39;) as f: f.write(data)if __name__==&39;: data = &39; outfile = &39; output(outfile,data,mode=&39;)
以下用读出的数据类型来简单说明下为什么二进制不支持编码参数:
代码及输出结果:
def output(outfile,data,mode): with open(outfile,mode,encoding=&39;) as fw: fw.write(data)def readfile(outfile): with open(outfile,&39;) as frb: data = frb.read() print(type(data),data) with open(outfile,&39;,encoding=&39;) as fr: data = fr.read() print(type(data),data)if __name__==&39;: data = &39; outfile = &39; output(outfile,data,mode=&39;) readfile(outfile)
<class &39;> b&39;<class &39;> dddd中
可以看到二进制模式读取出来的是‘bytes&39;编码读出来的是&39;类型。
我个人的理解(可能不正确):二进制模式是按字节读写的一串0和1,是机器码,只有ASCII码可以显示出可以直接读懂的字形,其他的都需要转义;非二进制模式的,是字符串,按照不同的编码规则编解码之后的内容,可以直接显示,当然编码用得不对的时候也会是乱码。机器存储及运算的都是二进制,二进制模式读写就没有编码概念,后处理才需要编码。
本文内容由小萱整理编辑!