今天对着《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');
便解决了问题。