# 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()**方法。