;ASCII一共规定了128种,如大写字母A是65,即01000001;可见一字母一字节; GB2312编码 简体中文常见的编码,两个字节代表一个中文汉字 ,理论上256*256个编码,即可表示65536...;但英文字母其实只用一个字节就够了,unicode编码写英文时多了一个字节,浪费存储空间。...,dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str存入文件中,如json.dump(all_house,f,ensure_ascii...(str)直接给的是str,也就是直接将字典转成str,无需写入文件,类似一个数据格式的转换方法,将python字符串转成json字典。...2.7.15,不是3.7,导致存储不成功的时候,一直以为是代码的问题。
;但英文字母其实只用一个字节就够了,unicode编码写英文时多了一个字节,浪费存储空间。...,dump需要一个类似于文件指针的参数(并不是真的指针,可称之为类文件对象),可以与文件操作结合,也就是说可以将dict转成str存入文件中,如json.dump(all_house,f,ensure_ascii...(str)直接给的是str,也就是直接将字典转成str,无需写入文件,类似一个数据格式的转换方法,将python字符串转成json字典。...(output); f.write('\n'); f.close(); 在2.7.15版本的python中,提示错误TypeError: 'encoding' is an invalid keyword...2.7.15,不是3.7,导致存储不成功的时候,一直以为是代码的问题。
(pFile); 出现了乱码,是因为输出文件的时候没有及时找到’/0’.将写文件的strlen改为sizeof 文件读写函数需要读写的时候将’/0’带上,它类似于printf和strlen等函数以’/0....对于它的第四个参数lpReturnedString需要添一个char*来返回。...这里不能添CString对象来返回,这是一个特殊的地方。别的函数一般要char*的时候都可以用CString对象来代替。 这里我们用CString的GetBuffer来添这个char*。...返回一个CString对象内部字符的缓冲区(字符数组)的指针,这个返回的指针不是一个常量的指针,因而允许直接修改指针所指向的CString对象的内容。...如果lpValue是NULL,并且lpcbValue不是NULL,这个函数返回ERROR_SUCCESS,并且通过lpcbValue所代表这个变量的指针存储数据的字节单位的的大小,这是让一个应用程序按照最好的方式去为查询值的数据分配空间
__bytes__, not 'str' 第2个问题是涉及文件句柄的操作(由打开的内置函数返回),写文件时默认Unicode字符串而不是字节序列。...> f.write(b'\xf1\xf2\xf3\xf4\xf5') TypeError: write() argument must be str, not bytes 抛出异常的原因是该文件是以写文本模式...('w')而不是写二进制模式('wb')打开的。...当文件处于文本模式时,写操作期望字符串包含Unicode数据,而不是字节序列。所以为了避免抛出异常,应该用“wb”模式打开data.bin文件。...(bytes)包含8位的二进制数据,字符串(str)包含Unicode编码的值; (2)为了让程序更健壮,需要使用专门的函数来校验输入的是字节序列,还是字符串。
如果要以整个列表的形式写入文件,就使用str()方法做下转化。 这个问题还没结束,如果列表中就是有元素不是字符串,而且要把全部元素取出来,怎么办呢?....: f.write(str(i)) 需要注意的是,writelines()不会自动换行。...多样需求的读写任务 前两部分讲了文件读写的几大核心方法,它们能够起作用的前提就是,需要先打开一个文件对象,因为只有在文件操作符的基础上才可以进行读或者写的操作。...open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。...上下文管理器是这样一个对象:它定义程序运行时需要建立的上下文,处理程序的进入和退出,实现了上下文管理协议,即在对象中定义了 __enter__() 和 __exit__() 方法。
字符流 inputStreamReader、OutputStreamWriter、BufferedReader、BufferedWriter inputStream类 常用方法 int read( )//一个字节一个字节的读取文件中的数据...,返回的是读取字节处理成int的数值(需要用char强转),如果读完就是-1; int read(byte[] b)//从输入流中读取b.length个字节到b中,返回读入缓存区的的总字节数,若读完返回...System.out.println((char) f1.read()); } } OutputStream类 常用方法 void write(int c)//将字节一个一个写入文件的输出流中...void write(byte[] buf)//一次将buf.length个字节写入文件的输出流中 void write(byte[] b,int off,int len)//一次将buf.length...将str字符串里包含的字符输出到指定的输出流中 write(String str,int off,int len)//将str字符串里从off位置开始长度为len的字符输出到输出流中 void close
(maxlen=N)创建了一个固定长度的队列,当有新记录加入而队列已满时会自动移除最老的那条记录。...itertools.dropwhile() 函数会 丢弃掉序列中的前面几个元素 例如,我们需要读取一个文件,文件的开头有一系列注释行并不是我们想要的 from itertools import dropwhile...在字符串上执行IO操作 使用io.StringIO()和io.ByteIO()来创建类似于文件的对象,这些对象可操作字符串数据。...b'hello world') 序列化Python对象 我们需要将Python对象序列化为字节流,这样就可以将其保存到文件中、存储到数据库中或者通过网络连接进行传输。...)或者pickle.loads() ---- Chap 6 数据编码与处理 读写JSON数据 主要使用JSON模块 两个主要的函数为json.dumps()和json.loads() 如果是文件而不是字符串的话使用
open()方法的返回值是一个 file 对象,可以将它赋值给一个变量。...注意,它在读写的时候是以bytes 类型读写的,因此获得的是一个 bytes 对象而不是字符串。在这个读写过程中,需要自己指定编码格式。...(s) ##报错 TypeError: a bytes-like object is required, not 'str' ##意思是它需要一个 bytes 类型数据,你却给了个字符串 ##-----...这个对象内置了很多操作方法。下面假设,已经打开了一个 f 文件对象。 1. f.read(size) 读取一定大小的数据, 然后作为字符串或字节对象返回。...\n") # 关闭打开的文件 f.close() 6. f.tell() 返回文件读写指针当前所处的位置,它是从文件开头开始算起的字节数。一定要注意了,是字节数,不是字符数。
它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。...MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。...要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可: from io import StringIO ##python2直接导入StringIO即可,Python3...str,而是经过UTF-8编码的bytes。...'> {'name': 'zhdya', 'sex': 'man', 'age': '28'} 如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load
这里要理解清楚所谓实现,其实多的就是一个字节数的信息,unicode和utf8本质上都是一串0和1,只是缺一个字节数量的区分,即,从信息量上来说: unicode + 自身长度 = utf8。...这样,在python解释器的处理过程中,python自然有办法用自己的标记来正确读写“自身长度”这个信息,因为这里不需要和外界交互,不需要类似utf8这样的约定规则,自己内部能正确获取信息即可。...text string 都应该是 unicode 类型,而不是 str,如果你在操作 text,而类型却是 str,那就是在制造 bug。...·从外部读取数据时,默认它是字节,然后 decode 成需要的文本;同样的,当需要向外部发送文本时,encode 成字节再发送。..., 可以直接用'w'打开去写,而不需要'wb' # 不过不编码成utf8的话也是会抛UnicodeDecodeError的,写文件需要编码这个原则py2还是有的。
open()返回的有个read()的对象,叫做file-like object。还可以是字节流,网络流,自定义流。它不要求从特定类继承,只要写个read()方法就成。 打开二进制文件需要一个b模式。...写内存流的时候使用StringIO和BytesIO str写入StringIO,需要创建一个StringIO,然后写入。...# 使用dumps的可选参数defalut把任意一个对象变成一个可序列化为json的对象。...需要一个函数来转换。...除了__slots__的class # 要把Json反序列化一个Student对象实例,loads()首先转换出一个dict对象,然后传入的object_hook函数负责把dict转换为Student
而所有的file类型对象都可以使用open方法打开,close方法结束和被with上下文管理器管理。这是Python的设计哲学之一。...注意,它在读写的时候是以bytes类型读写的,因此获得的是一个bytes对象而不是字符串。在这个读写过程中,需要自己指定编码格式。在使用带b的模式时一定要注意传入的数据类型,确保为bytes类型。...a bytes-like object is required, not 'str' #意思是它需要一个bytes类型数据,你却给了个字符串 #----------------------------...这个对象内置了很多操作方法。下面假设,已经打开了一个f文件对象。 (1)read函数 读取一定大小的数据, 然后作为字符串或字节对象返回。size是一个可选的数字类型的参数,用于指定读取的数据量。...\n") # 关闭打开的文件 f.close() (6)tell函数 返回文件读写指针当前所处的位置,它是从文件开头开始算起的字节数。一定要注意了,是字节数,不是字符数。
.' # 十六进制表示的字节4.字符编码要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件:>>> f = open('/Users/michael...要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可:>>> from io import StringIO>>> f = StringIO()>>> f.write...类似的,dump()方法可以直接把JSON写入一个file-like Object。...is not JSON serializable错误的原因是Student对象不是一个可序列化为JSON的对象。...可选参数default就是把任意一个对象变成一个可序列为JSON的对象,我们只需要为Student专门写一个转换函数,再把函数传进去即可:def student2dict(std): return
抛出的异常可以用参数来指出这是什么错误。 age = 12 raise TypeError("Invalid type!") 运行结果: >>> TypeError("Invalid type!")...文件处理 打开文件 读写文件是最常见的 IO(输入输出)操作。Python 内置了读写文件的函数,要读写文件需要打开一个文件对象,使用 open 函数。...open 函数打开的对象在 Python 中统称为 file-like Object。除了文件外,还可以是内存的字节流,网络流,自定义流等等。...若要读取一定数量的文件内容,可以使用一个数字作为参数来调用 read 函数。该数字确定要读取多少个字节的内容。 可以对同一个文件对象进行多次的 read 调用,该字节读取文件内容。...如果 write 写入成功,方法返回写入的字节数。 msg = "I like Python!!!"
可以看成是“字节数组”对象,每个元素是 8-bit 的字节,取值范围 0~255。...换句话说str类型的字符串无法write进文件,要将str字符串encode为bytes才能write a='asdfg' print(type(a)) b=a.encode() print(type(...65 b[0] = 66 #TypeError: 'bytes' object does not support item assignment 除法/不需要转float Python 3整数之间做除法可以得到浮点数的结果... chr( K ) 将编码K 转为字符,K的范围是 0 ~ 65535 ord( c ) 取单个字符的编码, 返回值的范围: 0 ~ 65535 字节数组对象bytearry...(1) 初始化 a = bytearray( 10 ) # a 是一个由十个字节组成的数组,其每个元素是一个字节,类型借用 int # 此时,每个元素初始值为 0 (2)
.' # 十六进制表示的字节 9.1.4 字符编码 要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件: >>> f = open('/Users...要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可: >>> from io import StringIO >>> f = StringIO() >>> f.write...\xe6\x96\x87') >>> f.read() b'\xe4\xb8\xad\xe6\x96\x87' 请注意,写入的不是str,而是经过UTF-8编码的bytes。...TypeError: is not JSON serializable 错误的原因是Student对象不是一个可序列化为...可选参数default就是把任意一个对象变成一个可序列为JSON的对象,我们只需要为Student专门写一个转换函数,再把函数传进去即可: def student2dict(std): return
由于这个库是在 python3 下的,所以加解密用的都是字节!...f = open('public.pem','wb') f.write(public_pem) # 将字节流写入文件 f.close() f = open('private.pem','wb') f.write...except (ValueError, TypeError): print "The signature is not valid." 随机数 和 random 库类似。...(1,10)) # x到y之间的整数 print(Crypto.Random.random.getrandbits(16)) # 返回一个最大为N bit的随机整数 其它功能 常用到 Util 中的pad...# 字节转整数 print(long_to_bytes(0x41424344)) # 整数转字节 print(getPrime(16)) # 返回一个最大为 N bit 的随机素数 print(getStrongPrime
第一个问题是bytes和str看起来很像,但是它们不兼容。所以你必须明确字符序列的类型。...另外,格式化字符串中%操作符也类似。 第二个问题是关于文件处理的操作默认Unicode字符串而不是raw bytes。这可能导致意外的错误。...例如,我想要写二进制数据到文件中, with open('data.bin', 'w') as f: f.write(b'\xf1\xf2\xf3\xf4\xf5') 将报错 TypeError...文本模式需要包含Unicode数据的str而不是包含二进制数据的bytes。'w'更改为'wb'修复问题。...with open('data.bin', 'wb') as f: f.write(b'\xf1\xf2\xf3\xf4\xf5') 读取文件也是类似的情况。'
.' # 十六进制表示的字节 字符编码 要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取GBK编码的文件: >>> f = open('/Users/michael...要把str写入StringIO,我们需要先创建一个StringIO,然后,像文件一样写入即可: >>> from io import StringIO >>> f = StringIO() >>> f.write...BytesIO StringIO操作的只能是str,如果要操作二进制数据,就需要使用BytesIO。...TypeError: is not JSON serializable 错误的原因是Student对象不是一个可序列化为...可选参数default就是把任意一个对象变成一个可序列为JSON的对象,我们只需要为Student专门写一个转换函数,再把函数传进去即可: def student2dict(std): return
尤其是在遇到一些 http 的 post 请求或 websocket,发送二进制数据(字节)时,还有一些算法的翻译,数据的转化,协议的复现,都需要不断的从网络上查阅,并未系统的从文档教程中入手。...ArrayBuffer 其他语言 java,易所表示的是字节数组,字节集,而在 js 中则称二进制数组(都是用来表示二进制数据的),要注意的是这里的二进制数组并不是真正的数组,而是类似数组的对象。...buffer.byteLength 属性用于获取字节长度(返回 32),直接打印 buf 的结果 其中还有一个slice方法,允许将内存区域的一部分,拷贝生成一个新的ArrayBuffer对象。...、固定长度的原始二进制数据缓冲区,是一个字节数组,可读但不可直接写。...通俗点来说(对我而言),ArrayBuffer相当于其他语言的字节数组、字节集,但不可写,而Buffer 对象则是操作ArrayBuffer的。
领取专属 10元无门槛券
手把手带您无忧上云