在python3中,字节码和字符码发生了区分,即
str1=b'i love python3'
str2=‘i love python3'
str1和str2归属于两种不同的类型,str1归属于bytes类型,str2归属于str类型
python3之所以采用 str和bytes这两种类型的原因是因为方便存储,我们知道,bytes类型其实就是8位一个字符的编码格式,在存储的过程中str1就是直接的而二进制类型,可以直接存储,如下面的例子所示:
def main():
try:
with open('./a.txt','wb+') as f:
str1 = b'i love python3'
f.write(str1)
except Exception as e:
raise e
if __name__ == '__main__':
main()
如上例所示,文件a.txt是以二进制的形式打开,而写入的str1也是二进制的格式,因此可以直接写入,而不用考虑编码的格式;
另外,在文件以二进制形式打开的时候,可以采用decoding的方法进行编码,然后存储到文件当中,如下所示:
def main():
try:
with open('./a.txt','wb+') as f:
str1 = 'i love python3'
f.write(str1.encode('utf-8'))
except Exception as e:
raise e
if __name__ == '__main__':
main()
在文件写入的时候,如果以二进制编码的形式读写文件时,我们不需要考虑文件的编码形式,只需要知道当前要写入的str类型的编码格式,最后再采用encode的方式将当前的字符串采用指定的编码形编写成二进制码并写入到文件中即可;