一个普通技术宅的点点滴滴

0%

学习总结第四天-python3字符串问题

今天对着《Python极客项目编程》上的第一个例子进行学习,了解了plistlib,matplotlib,numpy库的一些使用,但是在运行过程中出现了一些问题,在此做下记录。

有问题的代码如下:

file=open("common.txt",'w');
for val in commonTracks:
    val=val[0];
    s= val+'\n';
    file.write(s.encode("UTF-8"));

运行时,解释器提示write方法接收的不是一个字符串。经过一番排查发现,通过encode转化为的并不是字符串,而是字节流bytes,在python中,bytes是字节流bytes对象,字符串是字符串str对象。

我们可以在python下实际运行一下这段代码

a="Hello World";
print(a.encode("UTF-8"));

我们会得到这样的输出:

>>> print(a.encode("UTF-8"));
b'Hello World'

看起来和普通的字符串只是多了一个b,但这就表示这是一个字节流bytes,所以我们如果要向文件写入字节流的话,就要在open函数里,使用二进制模式,即将原来的代码改为

file=open("common.txt",'wb');

便解决了问题。