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
    发布时间:
    原始链接:
  • 相关阅读:
    [oldboy-django][2深入django]老师管理--查看,添加,编辑
    全虚拟化和半虚拟化的区别 cpu的ring0~ring3又是什么概念?
    Ansible Jinja if 生成不同的MySQL文件
    Linux内核优化(未注释)
    CentOS7入门到精通实战课程课后习题
    基于sersync海量文件实时同步
    CentOS6系统优化
    lnmp架构实现动态php
    云计算与虚拟化KVM深度实践
    Linux6系统安装
  • 原文地址:https://www.cnblogs.com/lepeCoder/p/7230570.html
Copyright © 2011-2022 走看看