错误解释该错误消息表明你传递给函数的参数是一个生成器对象(generator),而函数期望接收的是一个字符串(str)、字节(bytes)或者文件路径(os.PathLike)对象。...在Python中,生成器是一种特殊的迭代器对象,用于生成序列。它们通常用于处理大型数据集或在迭代过程中节省内存。然而,并不是所有的函数都可以直接处理生成器作为输入。...转换生成器为列表尝试将生成器对象转换为列表或其他可迭代对象,然后将其作为函数参数传递。你可以使用list()函数来实现这一点,它接受可迭代对象作为参数并返回一个列表。...将生成器对象转换为字符串或字节如果函数期望接收字符串或字节类型的参数,可尝试使用生成器对象的值来构建字符串或字节,并将其传递给函数。...总结TypeError: expected str, bytes or os.PathLike object, not generator错误消息说明你将生成器对象传递给一个期望接收字符串、字节或文件路径对象的函数
在Python中,字节对象和字符串对象是不同的类型,字节对象使用bytes类型,字符串对象使用str类型。...通常,当我们处理文件读写、网络传输或进行加密解密操作时,需要使用字节对象来表示和处理二进制数据。如果我们在这些操作中使用了字符串对象,就会导致TypeError错误。...总结在Python编程中,当我们需要处理文件、网络传输或加密解密等情况下的二进制数据时,需要使用字节对象。...bytes类型和str类型是编程语言中常见的数据类型,用于表示字符或字节序列。下面我会对两者进行详细介绍:bytes类型:bytes类型是不可变的字节序列,它是由一系列0-255范围内的整数构成的。...str类型:str类型是表示字符串的数据类型,它是由Unicode字符构成的不可变序列。str对象可以通过字面量表示,如'hello'。str类型常用于表示文本,是我们在编程中经常使用的字符串类型。
如果第一个参数是一个字符串,它将被解释为一个复数,并且该函数必须在没有第二个参数的情况下被调用。第二个参数不能是一个字符串。每个参数可以是任何数字类型(包括复数)。...如果参数是一个字符串,那么该字符串将被查找为模块,函数,类,方法,关键字或文档主题的名称,并在控制台上打印帮助页面。如果参数是任何其他类型的对象,则会生成对象上的帮助页面。...如果 classinfo 不是类型或一组类型的元组,则会引发 TypeError 异常。...如果文件无法打开,则会引发 OSError。 file 是一个类似路径的对象,它提供要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符。...由于打印的参数会转换为文本字符串,print() 不能用于二进制模式文件对象。对于这些,请改用 file.write(...)。
若 它是一个遵循buffer接口的对象,对象的只读buffer将被用来初始化字节数组 若 它是一个可迭代对象,它必须是一个范围在0 <= x < 256中的整数可迭代对象,被用做数组的初始内容。...如果第一个参数是个字符串,它将被解释成复数,同时函数不能有第二个参数。第二个参数不能是字符串。每个参数必须是数值类型(包括复数)。...如果classinfo不是类型或类型组成的元祖和此类元组,则会引发TypeError异常。...填入的位置参数应该是可迭代的( iterable)对象.返回可迭代对象中最大的元素。如果有2个或更多的位置参数,返回最大位置参数。 有两个可选的仅关键字参数。...如果提供了一个位置参数,它应该是一个可迭代对象。返回可迭代对象中最小的元素。如果有2个或更多的位置参数,返回最小的位置参数。 有两个可选的仅关键字参数。
如果第一个参数是一个字符串,它将被解释为一个复数,并且该函数必须在没有第二个参数的情况下被调用。第二个参数不能是一个字符串。每个参数可以是任何数字类型(包括复数)。...如果 classinfo 不是类型或一组类型的元组,则会引发 TypeError 异常。...如果文件无法打开,则会引发 OSError。 file 是一个类似路径的对象,它提供要打开的文件的路径名(绝对或相对于当前工作目录)或要包装的文件的整数文件描述符。...由于打印的参数会转换为文本字符串,print() 不能用于二进制模式文件对象。对于这些,请改用 file.write(...)。...切片对象具有只读数据属性 start、stop 和 step,它们只返回参数值(或它们的默认值)。他们没有其他明确的功能;然而,它们被 Numerical Python 和其他第三方扩展使用。
在这个方面,Python被认为是强类型化语言,意味着每个对象都有明确的类型(或类),默许转换只会发生在特定的情况下,例如: In [17]: a = 4.5 In [18]: b = 2 # String...例如,你可以通过验证一个对象是否遵循迭代协议,判断它是可迭代的。...反斜杠是转义字符,意思是它备用来表示特殊字符,比如换行符\n或Unicode字符。...推荐参阅Python官方文档。 字节和Unicode 在Python 3及以上版本中,Unicode是一级的字符串类型,这样可以更一致的处理ASCII和Non-ASCII文本。...Unicode编码,用decode方法可以解码: In [81]: val_utf8.decode('utf-8') Out[81]: 'español' 工作中碰到的文件很多都是字节对象,盲目地将所有数据编码为
字节数组对象bytearry ---- 新增nonlocal在闭包中改变临时变量 python2没有nonlocal关键字,要修改临时变量只能将其改成可变数据类型,如数组。...可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。...在 python 3中字符串以 unicode 编码存储,当写入二进制文件时,字符串无法直接写入writr(或读取),必须以某种方式的编码(encode编码/decode解码)为字节序列后,方可写入。...map、filter、reduce Python 2 中 map、filter是内置函数,输出为列表 Python 3 中 map、filter是类,返回可迭代的对象,可用next()进行迭代...python3新增,将多个bytes字节类型数据组成数组。
所有对象都有值、标识和数据类型。值是对象表示的数据,比如整数42或者字符串hello。尽管有些令人困惑,但一些程序员将术语值用作对象的同义词,尤其是对于像整数或字符串这样的简单数据类型。...表 7-2:Python 的一些可变和不可变数据类型 可变数据类型 不可变数据类型 列表 整数 字典 浮点数 集合 布尔值 字节数组 字符串 数组 固定集合 字节 元组 当您修改一个变量时,可能看起来像是在更改对象的值...对于不可变数据类型的对象,如整数、字符串或元组,赋值更简单。...列表和字典是 Python 中常用的容器类型。 序列是任何容器数据类型的对象,其有序值可通过整数索引访问。字符串、元组、列表和字节对象是序列数据类型。...print(i) # body of the for loop ... c a t 可迭代对象还包括所有序列类型,如范围、列表、元组和字符串对象,以及一些容器对象,如字典、集合和文件对象。
HttpRequest.POST 一个类似字典的对象,包含所有给定的 HTTP POST 参数,前提是请求包含表单数据。...HttpResponse对象用法 典型的用法是将页面的内容以字符串、字节字符串或 memoryview 的形式传递给 HttpResponse 构造函数。...后端通常都是返回JSON数据。 传入迭代器 你可以传递 HttpResponse 一个迭代器而不是字符串。HttpResponse 将立即消耗迭代器,将其内容存储为一个字符串,然后丢弃它。...SameSite 并不是所有浏览器都支持,所以它并不能替代 Django 的 CSRF 保护,而是一种深度防御措施。...它继承了它的超类的大部分行为,但有一些不同: 其默认的 Content-Type 头设置为 application/json。 第一个参数 data 应该是 dict 实例。
错误的原因这个错误通常是由于尝试将字符串传递给一个期望字节型对象的函数或方法引起的。在 Python 3 中,字符串和字节型对象是两种不同的数据类型。...字符串是文本数据类型,用于表示字符序列,而字节型对象被用于处理原始的二进制数据。 一些情况下,函数或方法的参数要求传入字节型对象,这意味着我们需要将字符串转换为字节型对象以满足该参数的类型要求。...字符串和字节型是在计算机中表示和处理文本数据的两种不同方式。 字符串(String)是由字符组成的序列,可以包含字母、数字、符号和空格等可打印字符。...在大多数编程语言中,字符串通常被用于表示文本或字符数据。字符串是不可变的,也就是说一旦创建,就不能直接修改其中的字符,而是需要创建一个新的字符串。...字节型(Bytes)是由字节组成的序列,每个字节可以表示0到255之间的整数。字节型数据通常用于表示二进制数据或非文本数据,比如图像、音频、视频等文件。
万物皆对象 Python语言的一个重要特性就是它的对象模型的一致性。每个数字、字符串、数据结构、函数、类、模块等等,都是在Python解释器的自有“盒子”内,它被认为是Python对象。...每个对象都有类型(例如,字符串或函数)和内部数据。在实际中,这可以让语言非常灵活,因为函数也可以被当做对象使用。 注释 任何前面带有井号#的文本都会被Python解释器忽略。这通常被用来添加注释。...理解Python的引用的含义,数据是何时、如何、为何复制的,是非常重要的。尤其是当你用Python处理大的数据集时。 笔记:赋值也被称作绑定,我们是把一个名字绑定给一个对象。...例如,你可以通过验证一个对象是否遵循迭代协议,判断它是可迭代的。...字节和Unicode 在Python 3及以上版本中,Unicode是一级的字符串类型,这样可以更一致的处理ASCII和Non-ASCII文本。
每当您在程序中使用不正确或不受支持的对象类型时,都会引发该错误。 如果尝试调用不可调用的对象或通过非迭代标识符进行迭代,也会引发此错误。例如,如果您尝试使用 "str" 添加 "int" 对象。...因此,你可以看到在上述从 'scores.txt' 中提取数据的示例时,我们尝试使用 'str' 拆分字节对象,这是不受支持的操作。因此,Python 引发 TypeError。...,你不再需要处理字节对象并轻松使用字符串。...因此,您可以使用 decode() 方法将 'bytes' 类型的对象解码或转换为 'str' 类型。...Python 中的一种方法,可用于将给定的字符串转换为 'bytes' 类型。
最常用的字节是八位的字节,即它包含八位的二进制数; 位(bit)是计算机 内部数据 储存的最小单位,11001100是一个八位二进制数; 字节(byte)是计算机中 数据处理 的基本单位,习惯上用大写 ...,不能直接存储在硬盘 – 字节串是给计算机看的,给计算机传输或者保存的,在Python中,程序中的文本都用字符串表示; 4.字节串概念 字节串是字节序列,它可以直接存储在硬盘, 字节串是给计算机看的。...和bytearray是字节数据(如:二进制数据,给计算机看的),它们都是序列,可以进行迭代遍历。...2.str和bytes是不可变序列,通过str类型的通用函数,比如find()、replace()、islower()等函数修改后实际上是重新创建了新对象;bytearray是可变序列,可以原处修改字节...3.bytes和bytearray都能使用str类型的通用函数,比如find()、replace()、islower()等,不能用的是str的格式化操作。
例如,可以通过验证对象是否遵循迭代器协议(iterator protocol),验证它是否是可迭代的。...Out[50]: ['foo', 2, (3, 4)] 另外,例如字符串和元组,是不可变对象,即不能修改其内部数据: In [51]: a_tuple = (3, 5, (4, 5)) In [52]...: 'tuple' object does not support item assignment 2.3.2 标量类型 Python有为数不多的内置类型,用于处理数值数据、字符串、布尔值(True或False...可以用count方法计算c中的换行符: In [60]: c.count("\n") Out[60]: 3 Python的字符串是不可变的,不能修改字符串: In [61]: a = "this is...b or c > d: .....: print("Made it") Made it for循环 for循环是在集合(例如列表或元组)或迭代器中进行迭代。
当你处理文本数据时,使用 codecs.open 来打开文件。默认使用 utf-8 编码除非显式地定义或者只对 unicode 字符串操作。...当你处理字节型数据时,使用 b'foo' 将字符串标为字节型,这样 2to3 就不会将它转换为 unicode。...下面这张表列举了一些字节型字符串,和它们在 Python 3 中将变成什么: 类型 Python 3 中的类型(unicode == str) 标识 unicode 文档字符串 unicode __repr...需要特别注意的是,为了使用所有标准库函数,URL 需要编码为 utf-8 文件名 unicode 或者字节,大部分 API 接受两者但不支持隐式转换。 二进制内容 字节或字节序列。...注意第二种类型是可变的,所以你要清醒认识到你的字符串对象是可变的。 Python 代码 unicode,在交给 exec 执行前你需要自行解码。
传入字符串时,默认以10进制进行转换。 字符串中允许包含"+"、"-"号,但是加减号与数值间不能有空格,数值后、符号前可出现空格。...如果classinfo类型对象,不是一个类型对象或者由多个类型对象组成的元组,则会报错(TypeError)。 6.iter(object[,sentinel]) 函数功能返回一个可迭代对象。...7.len(s) 返回对象的长度,参数可以是序列(比如字符串、字节数组、元组、列表和range对象),或者是集合(比如字典、集合、不可变集合) 如果参数为其它类型,则其必须实现__len__方法,并返回整数...可以传入一个可迭代对象,如字符串,字节数组、元组、列表、range对象,结果将返回可迭代对象中元素组成的列表。...函数接受一个函数类型参数、一个或者多个可迭代对象参数,返回一个可迭代器,此迭代器中每个元素,均是函数参数实例调用可迭代对象后的结果。
我们会从Python最基础的数据结构开始:元组、列表、字典和集合。然后会讨论创建你自己的、可重复使用的Python函数。最后,会学习Python的文件对象,以及如何与本地硬盘交互。...字典 字典可能是Python最为重要的数据结构。它更为常见的名字是哈希映射或关联数组。它是键值对的大小可变集合,键和值都是Python对象。...: by_letter[word[0]].append(word) 有效的键类型 字典的值可以是任意Python对象,而键通常是不可变的标量类型(整数、浮点型、字符串)或元组(元组中的对象必须是不可变的...)是构造新的可迭代对象的一种简单方式。...表3-4 Python重要的文件方法或属性 文件的字节和Unicode Python文件的默认操作是“文本模式”,也就是说,你需要处理Python的字符串(即Unicode)。
str是字符数据,bytes和bytearray是字节数据。它们都是序列,可以进行迭代遍历。str和bytes是不可变序列,bytearray是可变序列,可以原处修改字节。...bytesbytes是不可变的二进制格式字节数据(注意,是字节不是字符),以整数方式表示。例如对于ascii范围内的字符"a",它存储为97。...要构造bytes类型的数据,方法之一是在字符串前面加上b或B前缀。...python中的编码、解码上面说了,编码是将字符数据转换成字节数据(raw data),解码是将字节数据转换成字符数据。...在Python中字符数据也就是字符串,即str类型,字节数据也就是bytes类型或bytearray类型。
来源: Shocker 链接: https://shockerli.net/post/python-study-note/ 简介 Python 是一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言...可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得”脚本化”的能力。 面向对象:Python 是强面向对象的语言,程序中任何内容统称为对象,包括数字、字符串、函数等。...Python 3 不会以任意隐式的方式混用 str 和 bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。...,可存储任意类型对象 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 键必须是唯一的,但值则不必 值可以是任意数据类型 键必须是不可变的...迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器。
可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得”脚本化”的能力。 面向对象:Python 是强面向对象的语言,程序中任何内容统称为对象,包括数字、字符串、函数等。...使用的语法是在字符串前面加上前缀 u。 在 3.x 中,所有的字符串都是 Unicode 字符串。 字符串函数 ? ? ? 字节(bytes) 在 3.x 中,字符串和二进制数据完全区分开。...Python 3 不会以任意隐式的方式混用 str 和 bytes,你不能拼接字符串和字节流,也无法在字节流里搜索字符串(反之亦然),也不能将字符串传入参数为字节流的函数(反之亦然)。...,可存储任意类型对象 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 键必须是唯一的,但值则不必 值可以是任意数据类型 键必须是不可变的...迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 迭代器有两个基本的方法:iter() 和 next()。 字符串,列表或元组对象都可用于创建迭代器。
领取专属 10元无门槛券
手把手带您无忧上云