# Python File(文件) 方法
### open() 方法
Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
**注意:**使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。
~~~
open(file, mode='r')
~~~
完整的语法格式为:
~~~
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
~~~
参数说明:
* file: 必需,文件路径(相对或者绝对路径)。
* mode: 可选,文件打开模式
* buffering: 设置缓冲
* encoding: 一般使用utf8
* errors: 报错级别
* newline: 区分换行符
* closefd: 传入的file参数类型
* opener:
mode 参数有:


默认为文本模式,如果要以二进制模式打开,加上b。
### file 对象
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:


在 write 内容后,直接 read 文件输出会为空,是因为指针已经在内容末尾。
**两种解决方式: 其一,先 close 文件,open 后再读取,其二,可以设置指针回到文件最初后再 read**
~~~
import os;
document = open("testfile.txt", "w+");
print "文件名: ", document.name;
document.write("这是我创建的第一个测试文件!\nwelcome!");
print document.tell();
#输出当前指针位置
document.seek(os.SEEK_SET);
#设置指针回到文件最初
context = document.read();
print context;
document.close();
~~~
为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现:
~~~
try:
f = open('/path/to/file', 'r')
print f.read()
finally:
if f:
f.close()
~~~
但是每次都这么写实在太繁琐,所以,Python 引入了with语句来自动帮我们调用**close()**方法:
~~~
with open('/path/to/file', 'r') as f:
print f.read()
~~~
这和前面的try ... finally是一样的,但是代码更佳简洁,并且不必调用**f.close()**方法。