Python 文件对象

1)

内置函数 open() 用于打开和创建文件对象

open(name,[,mode[,bufsize]])

文件名、模式、缓冲区参数

mode:

r 只读

w 写入

a 附加

使用 + 同时支持输入、输出操作 r+ w+ a+

附加 b 表示以二进制方式打开 rb wb ab

bufsize:

0 禁用缓冲

1 使用缓冲,仅缓冲一行数据

负数 使用系统默认缓冲

正数 指定缓冲空间大小

例如: file1 = open('/etc/fstab',r+)

注意使用 r r+ 不能打开不存在的文件会产生IO错误

2)文件的属性

f.closed 显示文件是否关闭

f.name 显示当前名称

f.encoding 编码格式

f.mode 当前文件打开模式

f.softspace 在使用print语句时,是否在一个值之前打印空格,默认为0。若需打印则 f.softspace = 1

f.newlines 返回到当前为止读取到的行结束符字串,若无行分隔符则为None

3)文件的方法

f.tell() 当前指针在文件中字节位置 f.tell(0)

f.next() 迭代显示,不会移动指针

f.close() 关闭文件

f.fileno() 返回文件描述符

f.readline() 读取返回一行,会移动指针

f.readlines() 以列表形式返回所有行

f.read() 读n个字节 f.read(10)

f.write() 写入数据

注意: 文件方法read()等在读取文件时,会一并读取其行结束符

文件方法write()执行写出操作时,不会自动为其添加行结束符

f.writelines() 将列表中所有字串当做一行写入

import os

l1 = os.listdir('/etc')

f1.writelines(l1)

f1.flush()

以上输出为一行

l2 = [ i + '\n' for i in os.listdir('/etc')]

f1.writelines(l2)

f1.flush()

此方法会保证每个字串一行,用列表解析的方式在每次循环后加入换行符

f.isatty() 是否为终端设备文件

f.truncate() 截取n个字节

f1.truncate(10) 截取10个字节

f1.truncate(f1.tell()) 只截取到当前指针处

f.seek(offset[,whence]) 指针偏移位置

whence: 起点

0: 从文件头

1:从当前位置

2:从文件尾部

offset: 偏移量

f1.seek(0) 回到首部

f.flush() 清除输出缓冲区