搜索
写经验 领红包
 > 美容

pytho二进制编码(pytho中的二进制以什么开头)

导语:Python中的二进制与编码

python 二进制编码(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码可以显示出可以直接读懂的字形,其他的都需要转义;非二进制模式的,是字符串,按照不同的编码规则编解码之后的内容,可以直接显示,当然编码用得不对的时候也会是乱码。机器存储及运算的都是二进制,二进制模式读写就没有编码概念,后处理才需要编码。

本文内容由小萱整理编辑!