【摘要】文件对象不仅可以用来访问普通的磁盘文件,还可以访问任何其他类型抽象层面上的“文件”。随着使用Python经验的增长,会遇到很多处理“类文件”对象的情况。

有很多这样的例子,例如实时的“打开一个URL”来读取web界面,在另一个独立的进程中执行一个命令进行通信,就好像是两个同时打开的文件,一个用于读取,另一个用于写入。

文件内建函数(open()和file()):

作为打开文件之门的“钥匙”,内建函数open()以及file()提供了初始化输入/输出(I/O)操作的通用接口。open()内建函数成功打开文件后会返回一个文件对象,否则引发一个错误。当操作失败,Python会产生一个IOError异常。内建函数open()的基本语法是:file_object = open(file_name, access_mode = 'r', buffering = '1')。

file_name是包含要打开的文件名字的字符串,可以是相对路径或绝对路径。可选变量access_mode也是一个字符串,代表文件打开的模式。通常,文件使用模式‘r’,‘w’,或者‘a’模式来打开,分别代表读取,写入和追加。还有个‘U’模式,代表通用换行符支持。

使用‘r’或‘U’模式打开的文件必须是已经存在的。使用‘w’模式打开的文件若存在则首先清空然后重新创建。以‘a’模式打开的文件是为追加数据作准备的,所有写入的数据都将追加到文件的末尾。如果你了解C,会发现这些也是C库函数open()中使用的模式。‘+’代表可读可写,‘b’代表二进制模式访问。

另外一个可选参数buffering用于指示访问文件所采用的缓冲方式。其中0表示不缓冲,1表示只缓冲一行数据,任何其他大于1的值代表使用给定值作为缓冲区大小。不提供该参数或者给定负值代表使用系统默认缓冲机制,一般情况下使用系统默认方式即可。

UNS(Universal NEWLINE Support,通用换行符支持),当你使用‘U’标志打开文件的时候,所有的行分隔符(或行结束符,无论它原来是什么)通过Python的输入方法(如read())返回时都会被替换成换行符NEWLINE。