在一个简单的文件写入之后:
fileOBJ = open("text1.txt","wb")
fileOBJ.write("It is just a text.\n")
fileOBJ.close()
Traceback (most recent call last):
File "text.py", line 5, in
fileOBJ.write("It is just a text.\n")
TypeError: a bytes-like object is required, not 'str'
python3 在 python2 的基础上对文本和二进制字符进行了更严格的区分。其中文本是 str 类型,而二进制字符是 bytes 类型。
在文件 open() 的参数里如果使用的 mode 是 “b” ,即二进制类型打开,则在文件的 write() 里,传入的应该是二进制字符,所以当我传入 str 时,出现了 TypeError 报错
解决方法:
1. 使用 “t” 类型打开文件:
fileOBJ = open("text1.txt","wt")
fileOBJ.write("It is just a text.\n")
fileOBJ.close()
2. 将传入的 str 参数转换为 bytes 类型:
python3 同时提供了 str 和 bytes 两种类型相互转换的函数:
encode,将str类型编码为bytes。
decode,将bytes类型转换为str类型。
具体用法为:
fileOBJ = open("text1.txt","wb")
fileOBJ.write("It is just a text.\n".encode())
fileOBJ.close()