解决TypeError: can only concatenate str (not “bytes”) to str

错误提示:
pic_content = pic_content+f.read()
TypeError: can only concatenate str (not “bytes”) to str

首先来看代码:

text_content = '''HTTP/1.x 200 OK
Content-Type: text/html<head>
<title>WOW</title>
</head>
<html>
<p>Wow, Python Server</p>
<IMG src="test.jpg"/>
</html>
'''
f = open('test.jpg', 'rb')
pic_content = '''
HTTP/1.x 200 OK
Content-Type: image/jpg'''
pic_content = pic_content+f.read()

rb:也即 binary mode,read()操作返回的是bytes
但是pic_content是 str类型的,所以这时候可以通过在pic_content字符串前加 b,把字符串类型转换成bytes 类型。

错误解决。

解决 TypeError: a bytes-like object is required, not ‘str’

错误提示:
method = request.split(’ ')[0]
TypeError: a bytes-like object is required, not ‘str’

s.listen(3)
conn, addr = s.accept()
request = conn.recv(1024)
method = request.split(' ')[0]
src = request.split(' ')[1]

由代码块:recv 函数的返回值是 bytes 类型。
request是个bytes类型,但是split是对str进行操作的,所以此时要把bytes类型转换成str。也就是要对request 进行 decode操作:
request.decode()

修改两行代码 错误解决。

method = request.decode().split(' ')[0]
src = request.decode().split(' ')[1]

Python 字符串前面加u,r,b,f的含义

字符串前加 u

u"我是含有中文字符组成的字符串。"

作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。

字符串前加 r

r"\n\n\n\n”  # 表示一个普通生字符串 \n\n\n\n,而不表示换行了。

作用:去掉反斜杠的转译机制。

(特殊字符:即那些,反斜杠加上对应字母,表示对应的特殊含义的,比如最常见的”\n”表示换行,”\t”表示Tab等。 )

应用:常用于正则表达式,对应着re模块。

字符串前加 b

 response = b'<h1>Hello World!</h1>'     # b' ' 表示这是一个 bytes 对象

作用:b" "前缀表示:后面字符串是bytes 类型。

用处:网络编程中,服务器和浏览器只认bytes 类型数据。

如:send 函数的参数和 recv 函数的返回值都是 bytes 类型

在 Python3 中,bytes 和 str 的互相转换方式:

str→bytes:encode()方法。str通过encode()方法可以转换为bytes。
bytes→str: decode()方法。bytes通过decode()方法可以转换为str。

字符串前加 f

import time
t0 = time.time()
time.sleep(1)
name = 'processing'#以 f开头表示在字符串内支持大括号内的python 表达式
print(f'{name} done in {time.time() - t0:.2f} s')

输出:
processing done in 1.00 s

python 解决bytes和str之间 出现 TypeError的问题相关推荐

  1. Python 了解 bytes 与 str 的区别

    Python 有两种类型可以表示字符序列 bytes:实例包含的是原始数据,即 8 位的无符号值(通常按照 ASCII 编码标准来显示) str:实例包含的是 Unicode 码点(code poin ...

  2. 浅析Python中bytes和str区别

    本博转载自:Chown-Jane-Y的浅析Python3中的bytes和str类型 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示, ...

  3. Python中bytes和str区别详细介绍

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  4. python bytes与str之间的转换 hex的字符转换

    python在与外接设备和后台交互编程中经常遇到字符格式匹配的问题,我在 pyserial和socket编程中遇到的bytes类型字符与其他形式的字符串之间的转化问题的解决方法做了搜集,下面就我本人在 ...

  5. Python学习,python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  6. python中bytes_Python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  7. 浅析Python3中的bytes和str类型

    Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str和b ...

  8. 浅析Python3中的bytes和str类型(转载)

    目录 编码发展的历史 bytes和str之间的异同 Python 3最重要的新特性之一是对字符串和二进制数据流做了明确的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示 ...

  9. python str byte编码_Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题...

    Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分.文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示.Python 3不会以任意隐式的方式混用str ...

最新文章

  1. 解决错误:No module named ‘Cryptodome‘ 和错误rosbag.bag.ROSBagException: unsupported compression type: lz4
  2. G - Bad Hair Day (单调栈)
  3. linux hadoop测试,快速搭建Hadoop环境并测试mapreduce
  4. CMake基础 第4节 动态库
  5. vscode给java项目传递args[]参数
  6. python绘制神经网络(转载)
  7. 关于JAVA匿名内部类,回调,事件模式的一点讨论
  8. EditPlus 快捷键大全
  9. wps excel 向下选中指定行数并填充根据公式计算好的数据
  10. ubuntu下终于安装好了nvidia的gt540显卡驱动
  11. 爱普生L4168喷墨打印机打印断线或堵头故障处理
  12. uniapp的苹果全屏播放再退出会导致页面字体变大解决方法
  13. Myeclipse中java文件注释格式设置
  14. 多用户商城系统商品表设计
  15. 错误提示 - Procmon.exe - 无法找到入口(InitializeSRWLock)
  16. Google的S2算法原理以及使用Java版本--部分参考自《高效的多维空间点索引算法》
  17. postgresql11.2修改分区表中复合索引字段长度遇到的BUG
  18. 产品推广合作扁平化通用PPT模板
  19. 关于antispy反间谍软件的研究
  20. 硬件接口开发之Modem来电显示

热门文章

  1. 【Matlab】根据图生成带权邻接矩阵,并求出最短路径
  2. 2s相机 android6,Android Camera2 使用总结
  3. Executors源码解读——创建ExecutorService线程池
  4. c++设计新思维_贵阳花溪区初三冲刺多少钱,新思维
  5. php转盘中奖率,PHP大转盘中奖概率算法实例_PHP
  6. 如何反映两条曲线的拟合精度_用水平仪如何检测导轨的直线度?
  7. linux中进程优先级,linux下调整进程优先级
  8. java 方法重载的作业_java第六章 方法及方法重载 课堂笔记、作业
  9. nhinx php 调优,高流量站点NGINX与PHP-fpm配置优化
  10. Win11任务栏空白怎么办 Win11任务栏空白解决办法