读文件的内容,使用f.read(size),这个方法会读取一段数据并返回一个字符串或者一个bytes类型。size是一个可选的参数,当size没有给出或者为负数时,整个文件的内容都会被读取并返回。如果到达了文件的末尾,则会返回一个空字符串。


f.readline()函数读取一行字符串,这个字符串是以一个行结束符'\n'为结束的,如果它返回了一个空字符串,说明已经到了文件的结尾,如果返回一个'\n',则说明是一个空行。


当要读取整个文件时,可以使用循环结构,这个方式比较高效,快速,并且代码也比较简单。


如果要读取文件的所有行,则可以使用list(f)函数或者f.readlines()。


f.write(string)会将string的内容写入到文件中,返回一个数值,是写入的字符的个数。如果要把其他对象写入到文件中,要先将其转换为字符串。


f.tell()会返回当前文件读写指针的位置,如果是用二进制打开的,则这个位置表示从文件头开始到当前位置的字节数,如果是在文本模式,则这个位置的含义就比较模糊了。

为了改变文件的读写指针的位置,可以使用f.seek(offset,from_what)函数,这个函数会从某个位置加上offset值。from_what值有三个,0表示从文件头开始,1表示从当前位置开始,2表示从文件末尾开始。默认值是0.


在文本文件模式中,seek()函数只能相对于文件的头部,不能相对于当前位置或者文件末尾,offset只能是f.tell()返回的值或者0,其他的任何值都会产生没有定义的行为。


当你使用完了文件,要用f.close()函数来将文件对象占用的系统资源进行释放,f.close()调用完后,再引用文件对象就会发生错误。


打开文件还有一种方式,是使用with关键字,它的优势是文件总是会被正确的关闭即使有异常发生,并且语句比较简洁。