9.1 文件对象
- 文件的所有操作通过打开的一个文件对象或者类文件对象。
- 文件只是连续的字节序列;数据的传输是字节流。
9.2 open和file
- open() 内建函数成功打开文件后时候会返回一个文件对象, 否则引发一个错误,产生一个 IOError 异常.
- open继承C语言的fopen() access_mode,默认r
- 对于类Unix系统,文件都是二进制对待,因此b 参数可有可无,POSIX 兼容系统, 包括 Linux , 都会忽略 “b”,这里的open也继承这种态度。但是在win下,就要明显区分了。
- 另外一个可选参数 buffering 用于指示访问文件所采用的缓冲方式. 其中 0 表示不缓冲, 1
表示只缓冲一行数据, 任何其它大于 1 的值代表使用给定值作为缓冲区大小. 不提供该参数或者
给定负值代表使用系统默认缓冲机制。 - open() 和 file() 函数具有相同的功能, 可以任意替换. 任何使用 open() 的地方, 都可以使用 file() 替换它
>>> help(open)
>>> print file.__doc__
通用换行符支持(UNS)
如果文件刚被打开, 程序还没有遇到行结束符, 那么文件的newlines 为 None .在第一行被读取后, 它被设置为第一行的结束符. 如果遇到其它类型的行结束符, 文件的newlines 会成为一个包含每种格式的元组.
9.3 read 和write
- read() 方法用来直接读取字节到字符串中, 最多读取给定数目个字节. 如果没有给定 size参数(默认值为 -1)或者 size 值为负, 文件将被读取直至末尾.
- readline() 方法读取打开文件的一行(读取下个行结束符之前的所有字节). 然后整行,包括行结束符(用户自己处理),作为字符串返回. 和 read() 相同, 它也有一个可选的 size 参数, 默认为 -1, 代表读至行结束符. 如果提供了该参数, 那么在超过size 个字节后会返回不完整的行.
- readlines() 方法并不像其它两个输入方法一样返回一个字符串. 它会读取所有(剩余的)行然后把它们作为一个字符串列表返回. 它的可选参数 sizhint 代表返回的最大字节大小. 如果它大于 0 , 那么返回的所有行应该大约有 sizhint 字节(可能稍微大于这个数字, 因为需要