Python文件对象的内建方法和属性

时间:2023-02-08 11:00:23
一,内建函数open()和file()
 
语法:file_object = open(file_name, access_mode='r', buffering=-1)
 
    file_name是要打开的文件名字的字符串,可以使相对路径或者绝对路径,access_mode可选参数,表示文件打开的模式,'r','w','a' 分别代表读取,写入和追加。还有个'U'模式,代表通用换行符支持。
 
    'r'或者'U'模式打开的文件必须是已经存在的,使用'w'模式打开的文件若存在则首先清空,然后重新创建。以'a'模式打开的文件是为追加数据准备的,所有写入数据都将追加到文件的末尾。
    另一个可选参数buffering用于指示访问文件所采用的缓冲方式,0表示不缓冲,1表示缓冲一行数据,大于1代表用给定值作为缓冲区大小,不提供参数或者负值代表使用系统默认缓冲机制。
 
file()和open()的用法相同。
 
二,文件内建方法:
 
(1) 输入

read()方法用来直接读取字节到字符串中,可以指定读取数目,默认是文件将被读取直至末尾。
readline()读取打开文件的一行,包括行结束符,也可选size参数,默认为-1,代表直至读到行结束符。

readlines()不和前两个一个返回一个字符串,它会读取所有行然后把它们作为一个字符串列表返回,有一个可选参数sizhint代表返回的最大字节大小。

注意:当使用输入方法如read()或者readlines()从文件中读取行时,Python并不会删除行结束符,这个操作被留给了程序员。类似地,输出方法write()和writelines()也不会自动加入行结束符。你应该在向文件写入数据前自己完成。

(2) 输出
write()内建方法功能与read()和readline()相反,它把含有文本数据或二进制数据块的字符写到文件中去。
和readlines()一样,writelines()方法是针对列表的操作,它接受一个字符串列表作为参数,将它写入文件,行结束符不会自动加入,所以如果需要的话,你必须在调用writelines()前给每行结尾加上行结束符。
(3) 文件内移动 seek()
seek()方法可以在文件中移动文件指针到不同的位置,offset字节代表对于某个位置偏移量,位置的默认值为0,代表从文件开头算起,1代表从当前位置算起,2代表从文件末尾算起。和C语言总的fseek()类似。

文件对象的方法    操作
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.readinto(buf, size) 从文件读取 size 个字节到 buf 缓冲器(已不支持)
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        True 表示文件已经被关闭, 否则为 False
file.encoding      文件所使用的编码 - 当 Unicode 字符串被写入数据时, 它们将自动使用 file.encoding转换为字节字符串; 若file.encoding 为 None 时使用系统默认编码
file.mode          文件打开时使用的访问模式
file.name          文件名
file.newlines     未读取到行分隔符时为 None , 只有一种行分隔符时为一个字符串, 当文件有多种类型的行结束符时,则为一个包含所有当前所遇到的行结束符的列表
file.softspace    为0 表示在输出一数据后,要加上一个空格符,1 表示不加。这个属性一般程序员用不着,由程序内部使用。