# 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 参数有:
![](https://img.kancloud.cn/ba/01/ba0107464eb638711b9f0a21b4e47ad7_835x527.png)
![](https://img.kancloud.cn/1e/35/1e354f9b6b9b24f4121c6d124e0c7ab0_834x402.png)
默认为文本模式,如果要以二进制模式打开,加上b。
### file 对象
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
![](https://img.kancloud.cn/56/c8/56c82b028be082eb1b63400e9995c4c8_834x427.png)
![](https://img.kancloud.cn/4a/4a/4a4a509fd9493ce813aaf13aeb4fb648_835x470.png)
在 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()**方法。