Python网络编程(第3版) 中文完整pdf下载
前提:testSet.txt文件内容
-0.017612 14.053064 0
-1.395634 4.662541 1
-0.752157 6.538620 0
-1.322371 7.152853 0
一、代码:
filename = './testSet.txt'
def loadDataSet():
dataMat = []
labalMat = []
fread = open(filename)
#print(fread.read())
print(fread.readline())
print(fread.readlines())
loadDataSet()
二、打印结果
1、print(fread.readline())打印结果如下:
-0.017612 14.053064 0
2、print(fread.read())打印结果如下:
-0.017612 14.053064 0
-1.395634 4.662541 1
-0.752157 6.538620 0
-1.322371 7.152853 0
3、print(fread.readlines())打印结果
['-0.017612 14.053064 0\n', '-1.395634 4.662541 1\n', '-0.752157 6.538620 0\n', '-1.322371 7.152853 0']
三、分析
1、read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。
2、readline() 方法用于从文件读取整行,包括 "\n" 字符。如果指定了一个非负数的参数,则返回指定大小的字节数,包括 "\n" 字符。readline()方法每次读取一行;返回的是一个字符
串对象,保持当前行的内存
3、readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for... in ... 结构进行处理。如果碰到结束符 EOF 则返回空字符串。
四、使用场景:
1、read()是最快的,当然其功能最简约的,在很多情况下不能满足需求。
2、readline和readlines()在功能上类似,但是在内存足够的情况下使用readlines()可以很明显地提高执行效率。
五、注意事项(易错处)
readLine()
功能:读取一个文本行。
一定要注意:
1、读入的数据要注意有/r或/n或/r/n
2、没有数据时会阻塞,在数据流异常或断开时才会返回null
3、使用socket之类的数据流时,要避免使用readLine(),以免为了等待一个换行/回车符而一直阻塞
4、readLine()是一个阻塞函数,当没有数据读取时,就一直会阻塞在那,而不是返回null
5、readLine()只有在数据流发生异常或者另一端被close()掉时,才会返回null值。
6、如果不指定buffer大小,则readLine()使用的buffer有8192个字符。在达到buffer大小之前,只有遇到”/r”、”/n”、”/r/n”才会返回。
7、该方法读取一行文本,当遇到换行符”\n”,回车符”\r”或者回车符后面紧跟着换行符时,该行结束并返回。没有数据时,将会一直处于等待状态。因此在进行网络连接时,应该避免使用该方法。
read()
功能:读取单个字符的个数,如果已经读完的话会返回-1 (其范围从 0 到 65535 )