简述

文件输入输出操作在编程中很常见。因此对这部分进行一些学习。文件是连续的字节序列,因此文件输入输出是基于文件系统的字节流操作。Python将一个文件作为一个对象来处理。

文件打开与关闭

open()函数用于打开一个文件对象,可使用相对路径或绝对路径,打开的是一个文件对象,实际就是一指针,因此应该不会开缓存来放文件数据。
file()函数(工厂函数)和open()同样的功能。
close()通过关闭文件来结束对它的访问。
fileno()方法返回打开文件的描述符。
flush()方法会直接把内部缓冲区中的数据立刻写入文件,而不是被动地等待输出缓冲区被写入。
isatty()是一个布尔内建函数,当文件是一个类tty设备时返回True,否则返回False。
truncate()方法将文件截取到当前文件指针位置或者到给定size,以字节为单位。

文件输入

read()读取字节到字符串中,read相关的应当是会开缓存来存放读取的文件数据的。
readline()读取已打开的文件的一行。
readlines()读取所有(剩余的)行然后把它们作为一个字符串列表返回。

文件输出

write()把含有文本数据或二进制数据块的字符串写入到文件中。
writelines()是针对列表的操作,接受一个字符串列表作为参数,将它们写入文件。

文件内移动

seek()可以在文件中移动文件指针到不同的位置,在打开文件后文件指针默认应当是指向文件最开始的。该方法也可以找到文件的结尾。
text()提供当前文件指针在文件中的位置,从文件起始算起,以字节为单位。

文件迭代

for eachLine in

一行一行的访问文件,eachLine代表文本文件的一行,对于二进制格式文件的处理看来不适用。

文件对象方法

方法

操作

file.close()

关闭文件

file.fileno()

返回文件的描述符(file descriptor, FD, 整型值)

file.flush()

刷新文件的内部缓冲区

file.isatty()

判断file是否是一个类tty设备

file.next()

返回文件的下一行(类似于file.readline()),或在没有其他行时引发StopIteration异常

file.read(size=-1)

从文件读取size个字节,当未给定size或给定负值的时候,读取剩余的所有字节,然后作为字符串返回

file.readline(size=-1)

从文件读取并返回一行(包括行结束符),或返回最大size个字符

file.readlines(sizhint=0)

读取文件的所有行并作为一个列表返回(包含所有的行结束符),如果给定sizhint且大于0,那么将返回总和大约为sizhint字节的行(大小由缓冲器容量的下一个值决定)(比如说缓冲器的大小只能为4K的倍数,如果sizhint为15K,则最后返回的可能是16K)

file.xreadlines()

用于迭代,可以替换readlines()的一个更高效的方法

file.seek(off,whence=0)

在文件中移动文件指针,从whence(0代表文件起始,1代表当前位置,2代表文件末尾)偏移off字节

file.tell()

返回当前在文件中的位置

file.truncate(size=file.tell())

截取文件到最大size字节,默认为当前文件位置

file.write(str)

向文件写入字符串

file.writelines(seq)

向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象

文件内建属性

属性

描述

file.closed

表示文件已经被关闭,否则为False

file.encoding

文件所使用的编码

file.mode

Access文件打开时使用的访问模式

file.name

文件名

file.newlines

未读取到行分隔符时为None,只有一种行分隔符时为一个字符串,当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束符的列表

file.softspace

为0表示在输出一数据后,要加上一个空格符,1表示不加。这个属性一般程序员用不着,由程序内部使用