美文网首页
Python 3 TypeError: 0712

Python 3 TypeError: 0712

作者: 阿傻傻 | 来源:发表于2017-07-12 18:11 被阅读0次

    链接:http://blog.csdn.net/chuanchuan608/article/details/17915959

    Keywords:

    报错:

    TypeError:'str' does not support the buffer interface

    找问题找了好久,在StackOverflow上发现有人也出现同样的问题,并一个叫Scharron的人提出了解答:

    In python 3, bytes strings and unicodestrings are now two different types. Since sockets are not aware of string encodings, they are using raw bytes strings, that have a slightly differentinterface from unicode strings.

    So, now, whenever you have a unicode stringthat you need to use as a byte string, you need toencode() it. And whenyou have a byte string, you need to decode it to use it as a regular(python 2.x) string.

    Unicode strings are quotes enclosedstrings. Bytes strings are b"" enclosed strings

    When you use client_socket.send(data),replace it by client_socket.send(data.encode()). When you get datausing data = client_socket.recv(512), replace it by data =client_socket.recv(512).decode()

    同时我看了一下python帮助文档:

    Codec.encode(input[, errors])

    Encodes the object input and returns atuple (output object, length consumed). Encoding converts a string object to abytes object using a particular character set encoding

    Codec.decode(input[, errors])

    Decodes the object input and returns atuple (output object, length consumed). Decoding converts a bytes objectencoded using a particular character set encoding to a string object.

    input must be a bytes object or one whichprovides the read-only character buffer interface – for example, buffer objectsand memory mapped files.

    套接字的成员函数send

    socket.send(bytes[, flags]) 形参为字节类型

    socket.recv(bufsize[, flags]) Receive datafrom the socket. The return value is abytes object representing the data received.

    所以修正后代码如下:

    【woc看半天不懂代码怎么写】

    【派森爸爸明明辣么可爱弱智!】

    第二篇

    http://blog.csdn.net/shanliangliuxing/article/details/7920400

    第三篇

    http://www.runoob.com/python3/python3-data-type.html

    Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

    在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。

    等号(=)用来给变量赋值。

    等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

    标准数据类型

    Python3 中有六个标准的数据类型:

    Number(数字)

    String(字符串)

    List(列表)

    Tuple(元组)

    Sets(集合)

    Dictionary(字典

    Number(数字)

    Python3 支持 int、float、bool、complex(复数)。

    在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

    像大多数语言一样,数值类型的赋值和计算都是很直观的。

    内置的 type() 函数可以用来查询变量所指的对象类型。

    此外还可以用 isinstance 来判断

    好惹,知道问题惹。

    在python3.0以后的版本中,raw_input和input合体了,取消raw_input,并用input代替,所以现在的版本input接收的是字符串,你可以用:

    x = int(input("x: "))

    摊手。

    相关文章

      网友评论

          本文标题:Python 3 TypeError: 0712

          本文链接:https://www.haomeiwen.com/subject/jcgbhxtx.html