python 读写文件及文件对象的方法
1、读写文件:
open() 返回一个file object,最常用的有两个参数:open(filename, mode)。
f = open('workfile', 'w')
第一个参数是包含文件名的字符串。第二个参数是另一个字符串,其中包含一些描述文件使用方式的字符。 mode 可以是 'r' ,表示文件只能读取,'w' 表示只能写入(已存在的同名文件会被删除),还有 'a' 表示打开文件以追加内容;任何写入的数据会自动添加到文件的末尾。'r+' 表示打开文件进行读写。mode参数是可选的;省略时默认为 'r'。
在处理文件对象时,最好使用 with 关键字。优点是当子句体结束后文件会正确关闭,即使在某个时刻引发了异常。而且使用 with 相比等效的 try-finally 代码块要简短得多:
with open('E:test/1.txt') as f: read_data = f.read() # We can check that the file has been automatically closed. print(f.closed )
True
注:如果你没有使用 with 关键字,那么你应该调用 f.close() 来关闭文件并立即释放它使用的所有系统资源。
2、文件对象的方法
要读取文件内容,请调用 f.read(size),它会读取一些数据并将其作为字符串(在文本模式下)或字节串对象(在二进制模式下)返回。size 是一个可选的数值参数。当 size 被省略或者为负数时,将读取并返回 整个文件的内容;如果文件的大小是你的机器内存的两倍就会出现问题。当取其他值时,将读取并返回至多 size 个字符(在文本模式下)或 size 个字节(在二进制模式下)。如果已到达文件末尾,f.read() 将返回一个空字符串('')。
f.readline() 从文件中读取一行;换行符(\n)留在字符串的末尾,如果文件不以换行符结尾,则在文件的最后一行省略。这使得返回值明确无误;如果f.readline() 返回一个空的字符串,则表示已经到达 了文件末尾,而空行使用 '\n' 表示,该字符串只包含一个换行符。
要从文件中读取行,你可以循环遍历文件对象。这是内存高效,快速的,并简化代码:
如果你想以列表的形式读取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f.write(string) 会把 string 的内容写入到文件中,并返回写入的字符数。:
在写入其他类型的对象之前,需要先把它们转化为字符串(在文本模式下)或者字节对象(在二进制模式下)
f.tell() 返回一个整数,给出文件对象在文件中的当前位置,表示为二进制模式下时从文件开始的字节 数,以及文本模式下的意义不明的数字。 要改变文件对象的位置,请使用 f.seek(offset, whence)。通过向一个参考点添加 offset 来计算位置; 参考点由 whence 参数指定。whence 的0值表示从文件开头起算,1表示使用当前文件位置,2表示使用文件末尾作为参考点。whence 如果省略则默认值为0,即使用文件开头作为参考点。
在文本文件(那些在模式字符串中没有 b 的打开的文件)中,只允许相对于文件开头搜索(使用 seek(0, 2)搜索到文件末尾是个例外)并且唯一有效的offset 值是那些能从f.tell()中返回的或者是零。其他offset 值都会产生未定义的行为。
文件对象有一些额外的方法,例如 isatty() 和 truncate() ,它们使用频率较低