上一节内容自我感觉略显仓促,似乎并没有完全地把文件操作讲清楚,所以今天想再补充一些知识,力争能更好地完善这一部分的内容。
我们继续解释文件对象所提供的方法。文件的读取主要使用file.read(size)、file.readline()和file.readlines([sizehint])。size参数可以指定读取读取一定数目的数据, 然后作为字符串或字节对象返回,当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
还是以我们前一节中的file1.txt文件举例,使用file.read(size)方法读取文件的内容。
f = open('./file1.txt', mode='r+')
str1 = f.read()
print(str1)
print('-------------------------')
f.seek(0)
print(f.read(10))
f.close()
以上代码中有一个问题值得我们注意。当我们第一调用完read()方法后,在第二次调用read(10)方法前调用了seek(0)方法,这是因为,当代码第一次执行完read()方法后,操作文件的光标已经到了文件的最后,此时如果不让光标回到文件开头,那么无论如何调用read()方法都不可能读到内容,光标的概念就类似于我们使用word时不停闪烁的光标,我们所有的操作,都是基于光标位置的,包括读写都是如此。
file.readline()是从文件中读取单独的一行,默认的换行符为 'n',如果返回一个空字符串, 说明已经已经读取到最后一行。我们上一节中结合while循环的例子就是使用的这个方法,这里就不重复举例了。
file.readlines([sizehint])是将从文件中读取出来的内容以列表的形式返回,列表中的元素即文件中的每一行;设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。