zoukankan      html  css  js  c++  java
  • python3 TypeError: a bytes-like object is required, not 'str'

    在学习《Python web开发学习实录》时,

    例11-1:

    # !/usr/bin/env python
    # coding=utf-8
    import socket
    sock = socket.socket()
    sock.bind(('localhost', 8080))
    sock.listen(5)
    while True:
        connection,address = sock.accept()
        try:
            connection.settimeout(5)
            buf = connection.recv(1024)
            if buf == '1':
                connection.send("Welcome to server!")
            else:
                connection.send("please go out!")
        except socket.timeout:
            print('time out')
        connection.close()
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    编写web服务器报TypeError: a bytes-like object is required, not ‘str’错误,后来查到是因为python2和python3的版本有些差异,而python3最重要的新特性也是对文本和二进制数据做了更清晰的区分。文本用unicode编码,为str类型,二进制数据则为bytes类型。

    python有两种类型转换的函数encode(),decode() 
    encode(编码),可以将str类型编码为bytes。 
    decode(译码),可以将bytes类型转换为str类型。

    知道了上面两点要解决这个错误也就不麻烦了, 
    ypeError: a bytes-like object is required, not ‘str’ 
    错误原因是TypeError,因为要求bytes类型却给了str类型,那么只需要在send函数参数中加上encode()方法就行。 
    connection.send("please Go out!".encode())

    转载请保留原文链接及作者
    本文标题:
    文章作者: LepeCoder
    发布时间:
    原始链接:
  • 相关阅读:
    hdu 6085 bitset优化
    hdu 6070 二分答案+线段树
    hdu 6069 区间筛
    hdu 6058 并查集
    CF 835D D. Palindromic characteristics 字符串hash
    (转)Linux整合apache和tomcat构建Web服务器
    iTunes备份文件路径
    mac下Apache添加限速模块mod_bw
    mac显示隐藏文件夹
    Mac OS X下HomeBrew安装卸载
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/7230570.html
Copyright © 2011-2022 走看看